- 投稿日:2019-07-04T23:32:15+09:00
【Laravel初心者による備忘録】Laravelデータベースの基本!
Laravelでデータベースを使うなら
Laravelでデータベースを使うなら、DBクラスかEloquentのどちらかを使います。
DBクラス
データベースアクセスのための基本的な機能をまとめたクラス。クエリビルだという機能も用意されている。
Eloquent
ORMを実装したもの。
ORMの説明(Wikipediaより引用)
データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。オブジェクト関連マッピングとも呼ぶ。
前提知識 CRUD
データベース操作の基本はCRUD(Create,Read,Update,Delete)の実装です。
SQLでは(INSERT,SELECT,UPDATE,DELETE)が対応する。1.DBクラス
必要な手続き
データベースを設定する
config/database.phpの冒頭にある'default'の第二引数を使用したいデータベース名に設定すればOK。sqliteならsqlite、MySQLならmysql。
'default' => env('DB_CONNECTION', データベース名),環境変数を設定する
.envファイルに環境変数がまとめられているので、この中のDB_CONNECTIONとDB_DATABASEを編集する。
DB_CONNECTION=データベース名 DB_DATABASE=使用するデータベースファイルのパスを指定コントローラの修正
DB:selectで指定したSQL文を実行し、データベースからレコードの情報を取り出します。
use Illuminate\Support\Facades\DB; $変数 = DB::select(実行するSQL文);DBクラス内でのCRUD
冒頭でCRUDについて述べたと思うのですが、DBクラスでは以下の静的なメソッドを用います。
CRUD メソッド C DB::insert(クエリ文,パラメータ配列); R DB::select(実行するSQL文); U DB::update(クエリ文,パラメータ配列); D DB::delete(クエリ文,パラメータ配列); テンプレートの修正
@foreachディレクティブなどを使用してデータを活用します。
ディレクティブに関しては以下の記事に記載してあります。クエリビルダ
LaravelのDBクラスにはクエリビルダという機能が用意されています。
クエリビルダ=SQLのクエリ文を生成するために用意されたメソッド2.Eloquent
必要な手続き
データベースを設定する
config/database.phpの冒頭にある'default'の第二引数を使用したいデータベース名に設定すればOK。sqliteならsqlite、MySQLならmysql。
'default' => env('DB_CONNECTION', データベース名),環境変数を設定する
.envファイルに環境変数がまとめられているので、この中のDB_CONNECTIONとDB_DATABASEを編集する。
DB_CONNECTION=データベース名 DB_DATABASE=使用するデータベースファイルのパスを指定モデルの作成
artisanコマンドでモデルを作成します。作成されたモデルはappフォルダに配置されます。
php artisan make:model モデル名便利なツール
シーディングとマイグレーションはどちらの手法でも使える便利なものです。
シーディング
シード=最初から用意しておくコード
シーディングとはシードを作成する機能のこと。
初期状態でダミーのデータがあると便利。シーダーファイルの作成
artisanコマンドでシーダーファイルを作成します。作成されたシーダーファイルはdatabase/seedsフォルダの中に配置されます。
php artisan make:seeder シーダー名このファイルのrunメソッドにシーディング処理を記入します。
シーディングの登録
このシーダーファイルをdatabase/seeds/DatabaseSeeder.phpに登録します。
runメソッドに以下のように記入してください。$this->call(シーダークラス::class);シーディングの実行
以下のコマンドを使用してシーディングを実行します。
php artisan db:seedマイグレーション
現在使っているデータベースと全く同じ構造を再現するための仕組みのこと。データベースの移行したり、環境を移行したりする際に一からデータベースを作り直しのは大変。データベースを効率よく管理したいなら、マイグレーションを利用するべき!
マイグレーションファイルの生成
以下のコマンドを実行してマイグレーションファイルを作成します。
php artisan make:migration ファイル名database/migrationsの中に生成したマイグレーションが追加されます。
生成したファイルの中にはMigrationを継承したクラスが作成されています。このクラスにつのメソッドが用意されています。
- upメソッド(テーブルを生成するための処理)
- downメソッド(テーブルを消去するための処理)
それぞれ必要な処理を記述します。
主要な型の設定
説明 コマンド プライマリキー $table->increments(フィールド名); 整数 $table->integer(フィールド名); 実数 $table->float(フィールド名); 文字 $table->String(フィールド名); 真偽値 $table->boolean(フィールド名); 日時 $table->dateTime(フィールド名); NULL値可能なcreated_atとupdated_atカラム追加 $table->timestamps(); マイグレーションの実行
以下のコマンドを実行してマイグレーションを実行する。
php artisan migrateコンソールにメッセージが出力され、テーブルが用意される。
多くのチュートリアルでは・・・
以下のチュートリアルでは、マイグレーションを作成しEloquentを用いてデータベースを作成していました。
- 【Laravel 5.7対応】掲示板を作成するチュートリアル
- Laravel5.4でシンプルなCMSを作るチュートリアル
- Laravel 5.5 入門として「基本のタスクリスト」を作成する [その1]
個人的に苦しんだエラー特集
以下の記事を参考にしてDockerの環境を構築しました。
目的(機械学習のついでに、ローカルを汚さないようにするために...など)が果たせればOKと判断して雰囲気でDocker使ってたので、今回苦労しました(・・;) 夏休みあたりにちゃんとDocker勉強します?
Dockerでマイグレーションが作成できない
.envの
DB_HOSTをデフォルト設定から変更する必要がある。docker-compose.ymlでserviceとして定義した名前を使用する。phpMyAdminにログインできない
環境変数内(.env)のユーザーネーム、パスワード、サーバ名、全て同じものを使用してログインを試みたのに何度試しても失敗。
もう一度コンテナを作り直したら解決した。原因不明?
このエラー解消に恐ろしく時間取られたのが本当に悔しい...!参考
- 投稿日:2019-07-04T23:12:00+09:00
Laravel 導入手順(未完成)
Laravel 導入手順 1
Laravel初心者がデプロイ目指してわかったところを記録していくための備忘録
筆者の環境:MacOSComposerの導入
Laravelはインストールの他、プロジェクトを立ち上げる度にComposerというコマンドラインソフトを使うらしい。
初回は以下のホームページからダウンロードする。https://getcomposer.org/download
ダウンロードした composer.phar を
/usr/local/bin/composerへ移動するのでターミナルで以下のコマンドを打つ。cd ~/downloads sudo mv composer.phar /usr/local/bin/composer.pharこれはパスを通してファイル名だけでコマンドを起動する為の準備です。
なので、任意のディレクトリにcomposer.pharを移動して、毎回そこにcdで移動しても起動すると思いますがそれは大変だしどこへ行ったか分からなくなるので初めからパスの通っているところに動かしておきます。
慣れてる人は ~/bash.rc とかにexportしてパスを通しても同じ結果になると思いますが失敗して上書きすると大変な事になるので上記の方法が安心で簡単。
あと、
cd /usr/local/bin/ で入ってln -s composer.phar composerとやっておくとコマンド入力する時composerでもcomposer.pharでも動くようになる。
※補足: vs Java
他のサイトによると依存関係の管理を自動化してくれるとの解説があったので、恐らくだけど、ComposerってJavaだとMarvenとかGradleに相当するものだと思います。Projectの作成
Composerがインストールできたらプロジェクトを作成出来るようになっているので、
プロジェクトのルートフォルダにしたいところへcdで移動してから、terminalcomposer create-project Laravel/Laravel myapp --prefer-dictと打つとmyappという名前のプロジェクトができます。
myappの部分は自分が作りたいアプリの名前を入れる。
あと、スペースで区切られているオプションは入れ替えても動くみたいです。
例えば、
composer create-project Laravel/Laravel --prefer-dict myapp
でも同じ結果でした。(はじめのComposerはコマンド名だから固定)プロジェクトが認識されてるかテスト起動する
プロジェクトのルートディレクトリで
php artisan serveとするとララベルに(というかPHPに)内臓の簡易ローカルサーバーが立ち上がります。
MAMPとかTOMCATみたいなコンテナのテスト用お手軽版。
で、これを立ち上げて
http://localhost:8000/
にアクセスするとLaravelのサンプルページが表示されます。
終了するときはCtrl+cで。Controllerの作成
Laravelのアプリケーションプロジェクトは初期状態でControllerクラスが継承されていないらしい。
代わりに初期状態ではルーティング用のファイルに無名関数でコントローラが書かれている。web.phpRoute::get('/', function () { return view('welcome'); });しかし、このファイルは本来送られてきた(ユーザーがアクセスしてきた)URLをコントローラーのアクションメソッドへ案内する為のもので、ここでコントロールするべきではないと思います。
やろうと思えば逆に、viewをreturnする代わりにstring型で文字列をreturnする(つまりHTMLタグをここへ書く)でも動く。
ルーティングができているかの動作テストするのにファイル作るのがめんどくさい時とかは役に立ちそう。さて、コントローラはアプリケーションプロジェクトのルートディレクトリで
terminalphp artisan make::controller IndexControllerとすればHttp/Controllersフォルダにファイルができています。
なお、最後のIndexContollerは任意の名前にできます。普通はviewの名前+Controllerにするのが良さそう?マイグレーションファイルを作る
自分自身まだよくわかっていないので間違っているかもしれないが、雑な解釈で行くとデータベーステーブルのモデル定義を自動生成してくれる事をマイグレーションというっぽい。
ここに記述したカラムをcreateしてくれる。
.sqlスクリプトファイルとどう違うのかはよく分からない。記法はSQLより簡単だけど似たようなものだと思う。※「マイグレーション」でググるとマイグレーションとは「移行」という意味だと書いてあったがこの場合はその解釈だとかえって意味不明なので、上記のような解釈で捉えています。
プロジェクトルートで
terminalphp artisan make:migration create_tablename_tableと打つとマイグレーションファイルができる。
databaseフォルダにmigrationsフォルダができていて、その中に生成したファイルがあるので開いて
テーブル定義を記述する。
(SQLのcreate table に相当することをここへ書く。)
書けたらterminalphp artisan migrateとやるとデータベースにテーブルが出る・・はずが出なかった。
エラーが出た。
Laravelのインストールの仕方によってはこれで成功するらしい。
もう解決したので忘れたが、ここでエラーが出た場合それをコピーしてググるとすぐ答えが出てくるのでその通りにする。私の場合、envファイルに指定された名前のdatabaseがMySQLになかった。
あとdbのユーザー名とパスワードが違った。
.envファイルを開くとMySQLの項目が見つかるので、そこで使いたいdatabase名などに書き換えればいける。
ユーザー名がroot パスワードなしの場合だと
パスワードは空欄にしておく。なんか入ってたらだめ。
databaseはmysqlコマンドで入ってアプリケーション名とかをつけて作ればいいと思う。
で作った名前で.envに書いておく。それでやり直したら接続できました。
- 投稿日:2019-07-04T22:50:31+09:00
WordPressでjsやcssを読み込むときにキャッシュを更新させる対策
概要
WordPress開発をしているとき、jsやcssを編集したのに表示が変わっていないぞという経験は、ありませんか?
wp_enqueue_script()やwp_enqueue_style()関数で、jsとcssファイル編集後にキャッシュを更新させる対策を紹介します。
ブラウザキャッシュとは
chromeやfirefoxなどの多くのブラウザには、Webページの表示高速化を目的にキャッシュという機能があります。
このキャッシュは、Webページにアクセスした時、ブラウザで見える内容のデータ(js、css等)をキャッシュして表示を速くします。便利な機能ですが、jsやcssを編集してあと、Webページを更新してみると、表示が変わっていないことがあります。
これは、ブラウザにキャッシュされた古いjsとcssを読み込んでいるためです。キャッシュを更新して最新のページを表示させる対策として、以下があります。
①スーパーリロードをする。
スーパーリロードとは、ブラウザのキャッシュを無視してWebページの最新のデータを読み込む機能です。
これによって、キャッシュが上書きされ、最新のWebページが表示されます。ただ、サイトを閲覧している人誰もがスーパーリロードを知っているとは限らないし、jsやcssが変わっていることを知りません。
誰もが最新の状態でWebページを見ることができるように開発者側が配慮する必要があります。
そのため、この方法は好ましくありません。chromeスーパーリロードのショートカット
// Windows版 Shift + F5 // Mac版 Cmd + Shift + R②クエリパラメータにタイムスタンプを指定する。
クエリパラメータにタイムスタンプを指定することで、プラウザが別のファイルとして認識され、最新のjsとcssが読み込まれます。
タイムスタンプの指定例
// js <script type="text/javascript" src="example.js?date=20190101120000"></script> // css <link rel="stylesheet" type="text/css" href="style.css?date=20190101120000">パラメータ名は、特に決まりはありません。書かなくても動作します。
今回は、分かりやすいようにパラメータ名をdateにしています。
あとは、jsとcssファイル更新日時のタイムスタンプを動的に変えてやればOKです。WordPressでブラウザキャッシュ対策
WordPressでも簡単にキャッシュ対策できます。
jsとcssを読み込むwp_enqueue_script()やwp_enqueue_style()関数には、第4引数にバージョンを指定するパラメータが用意されています。バージョンを指定しない場合、デフォルトで設定されるWordPressのバージョンが指定されるようです。
そのため、jsとcssを編集しても、WordPressをアップデートされない限りは、最新のjsとcssが読み込まれないことになります。
バージョンにタイムスタンプを指定することで、上記で紹介したクエリパラメータにタイムスタンプを指定する対策と同様のことが可能です。タイムスタンプの指定例
// js wp_enqueue_script( 'example', plugins_url( '/js/example.js', __FILE__ ), array(), date_i18n( 'YmdHis', filemtime( plugins_url( '/js/example.js', __FILE__ ) ) ) ); // css wp_enqueue_style( 'style', plugins_url( '/css/style.css', __FILE__ ), array(), date_i18n( 'YmdHis', filemtime( plugins_url( '/css/style.css', __FILE__ ) ) ) );filemtime関数でファイルの更新日時のタイムスタンプを取得しています。
ちなみに、以下方法でも可能のようです。
こちらの方法では、date以外にデフォルトで設定されるWordPressのバージョンのクエリパラメータも追加で付与されるようです。
dateのクエリパラメータだけを表示させたい場合は、上記の方法が良いです。// js wp_enqueue_script( 'example?date=' . date_i18n( 'YmdHis', filemtime( plugins_url( '/js/example.js', __FILE__ ) ) ), plugins_url( '/js/example.js', __FILE__ ) ); // css wp_enqueue_style( 'style?date=' . date_i18n( 'YmdHis', filemtime( plugins_url( '/css/style.css', __FILE__ ) ) ), plugins_url( '/css/style.css', __FILE__ ) );参考URL(WordPress Codex)
wp_enqueue_script関数
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_enqueue_script
wp_enqueue_style関数
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_enqueue_style
- 投稿日:2019-07-04T22:19:54+09:00
Laravelの.envファイルと、config/database.phpファイルについてメモ
LaravelのDBを設定する際のメモ
下記ファイルについて、まとめておく。
.env config/database.php.env
.env は環境毎に変更したい情報をまとめておくファイルということだが、
ようは環境変数の設定を書いている。.envDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=config/database.php
.envファイルで設定した環境変数を取得して、DBの設定をしている。
config/database.php'default' => env('DB_CONNECTION', 'mysql'), 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], // .... ];env関数について
env関数はLaravelのヘルパ関数
公式
https://readouble.com/laravel/5.5/ja/helpers.htmlenv関数は
環境変数の値を取得する。
第2引数はデフォルト値。ex)'username' => env('DB_USERNAME', 'forge'),まとめ
Laravelの設定に関して、理解が深まった。
- 投稿日:2019-07-04T22:15:52+09:00
WordPressで使えそうなPHPの連想配列
PHPの連想配列をたまに使おうとして忘れがちなのでメモ。
達成したいこと
- ナビゲーションの並びを後からでも変更しやすいようにしたい
- ナビゲーションに画像を使用したときに画像パスを含めるとソースがカオスなことになるのをナントカしたい
- ナビゲーションは基本的に同じようなことを繰り返し書くことになるけど、書くのも見た目的にもなんだか面倒臭いので同じことを何度も書きたくない
環境
- PHPが使用出来る環境
- PHPのバージョンは5.4以降ならきっと大丈夫
想定
- WordPressでファイルパスやページのパスを羅列する場合
echo bloginfo云々を定数に置き換えればWordPressでなくても使えます避けたいパターン
避けたいパターン<li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/">HOME</a></li> <li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/about/">ABOUT</a></li> <li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/gallery/">GALLERY</a></li>上の例は3つしかないので未だマシですが、これが5つ以上になったら見るだけで発狂しそうです。
念願叶ったパターン
念願叶ったパターン<?php $navLists[] = array( 'url' => '', 'name' => 'HOME' ); $navLists[] = array( 'url' => 'about/', 'name' => 'ABOUT' ); $navLists[] = array( 'url' => 'gallery/', 'name' => 'GALLERY' ); ?> <?php foreach ( $navLists as $navList ): ?> <li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/<?php echo $navList['url']; ?>"><?php echo $navList['name']; ?></a></li> <?php endforeach; ?>「記述量増えてるじゃないか」 と何処からか石ころでも投げられてきそうですが、以下のように何かしらの変更があったときに煩わしさが減ります。
こんなとき便利かも
- ちょっとデザインを変更したい。(大抵ちょっとの変更じゃ済まないというツッコミは今は無しで)
- クラスだのIDだのリストの数の分だけ変更せずとも、一箇所の変更で済みます。
- 並び順を変えたい。一部を削除したい。一部を追加したい。
- 一部のページのURLを変えたい。一部のページのページ名を変えたい。
- 投稿日:2019-07-04T21:24:19+09:00
php-master-changes 2019-07-03
今日はビルドシステムのリファクタリング、不要コードの削除、CI の設定修正、mysqlnd で phpinfo() へ出力していた統計情報の削除、インクリメント / デクリメントの最適化、touch() が 2038 年以降の日付に対応していなかった問題の修正、opcache の誤った最適化の修正、SEGV が起きるバグの修正幾つか、テストの修正があった!
2019-07-03
petk: Remove check for ApplicationServices/ApplicationServices.h
- https://github.com/php/php-src/commit/534351c0141d1e41e9d656706aa506462ae42f5a
- [7.4~]
- ビルドシステムで、使われていないヘッダのチェックを削除
petk: Remove some old BeOS artefacts
- https://github.com/php/php-src/commit/b1ef50091d81a94e1d0a92010d99a862bb5a58b0
- [7.4~]
- BeOS 対応の残骸を削除
petk: Remove PHP_CHECK_CONFIGURE_OPTIONS
- https://github.com/php/php-src/commit/16df718251cac201e956dee35af8d96f548395e6
- [7.4~]
- configure オプションチェック用マクロ PHP_CHECK_CONFIGURE_OPTIONS の削除
- autoconf の機能でええやんという
petk: Remove libtool and automake from azure installs
- https://github.com/php/php-src/commit/6f558c9508b1800cd9fe72ed91d8abb48864a30e
- [7.4~]
- Azure Pipelines の設定で、libtool と automake を無駄にインストールしていたのを削除
petk: Enable option checking on CI
- https://github.com/php/php-src/commit/a45192e183d456b3288e466b51137e7e2a5e2cf6
- [7.4~]
- CI の設定で、--enable-option-checking=fatal を追加して存在しない configure オプションを使おうとしたらこけるよう修正
PeeHaa: Removed mysqlnd stats from phpinfo page
- https://github.com/php/php-src/commit/6ab04a6eef0750ea2d4365be7f9bcfd9caa33449
- [7.4~]
- ext/mysqlnd で、phpinfo() へ意味不明に統計情報を出力していたのを修正
dstogov: Optimization of INC/DEC helpers
- https://github.com/php/php-src/commit/56b8b165f87e54c8f381d4acfa0b1459b240b74a
- [7.4~]
- インクリメント / デクリメントの最適化
- zend_bool inc なフラグを処理中で引き回していたのをやめ、opcode の偶奇で判定するようにしている
cmb69: Fix #78241: touch() does not handle dates after 2038 in PHP 64-bit
- https://github.com/php/php-src/commit/44c8b7414ce96038017edc2fd827f8250669a62a
- [7.2~]
- touch() が 2038 年以降の日付に対応していなかった問題の修正
nikic: Fixed bug #78230
- https://github.com/php/php-src/commit/4892bbc167dfa0ea188baebbce538225f4a0455a
- [7.3~]
- ext/opcache で、誤った ZEND_TYPE_CHECK の最適化の修正
nikic: Fixed bug #78239
- https://github.com/php/php-src/commit/2bf880db2c624a32f130e0da309b22dcf782609d
- [7.4~]
- これ で SEGV が起きる問題の修正
nikic: Skip pcntl_sigwaitinfo() test under asan/msan
- https://github.com/php/php-src/commit/aff0b77d15ea1e4b9dbf9d80873990f601bf434c
- [7.4~]
- ext/pcntl で、pcntl_sigwaitinfo() のテストを asan / msan 有効時はスキップするよう修正
- なんか知らんがタイムアウトするらしい
nikic: Fix file conflict in fgets test
- https://github.com/php/php-src/commit/6dd4cccef82e76b19938900021785ac76bbc6946
- [7.4~]
- fgets() のテストの並列実行対策
nikic: Remove curl_basic_017.phpt
- https://github.com/php/php-src/commit/959c84b2494354b062b80eff52ef1de5e45ecf98
- [7.4~]
- ext/curl で、ランダムにこける別にいらないテストの削除
nikic: Fixed bug #78231
- https://github.com/php/php-src/commit/0e48e35e0485bc6d6458a45ecab5b19a0c2ec001
- [7.2~]
- ext/openssl で、socket_export_stream() で stream へエクスポートされたソケットの stream_socket_accept() が SEGV を起こす問題の修正
nikic: Avoid use of random ports in some socket tests
- https://github.com/php/php-src/commit/d6d9024cb865ea2bcab75bbacb47d601cb72033b
- [7.4~]
- ext/sockets で、テストでランダムなポートを使おうとしていた箇所をポート 0 利用に修正
- 投稿日:2019-07-04T19:05:34+09:00
LaravelでStorageを使ったファイルおよびディレクトリの操作をまとめてみた
はじめに
Laravelでファイルを取り扱った個人開発を行っている際にファイル保存の方法を調べた際に気になったため、調べてまとめました。
駅に貼られているチラシを見るように流し見していただければ幸いです。Storageとは?
LaravelではFlysystem PHPパッケージによって提供されているファイルシステムを抽象化させたものを使えるように設定されている。
設定ファイルはconofig/filesystems.phpにあり、環境によって保存先のディレクトリが分けられている。らしい。 (引用:参考文献1)今回はそんな
Storageを使ったファイルおよびディレクトリの操作方法をまとめてみる。基本的な書式
StorageはFacadesを拡張して使われるもの。
なので書式は基本的にStorage::◯◯('hoge', 'fuga');になる。
ファイル関連
ファイル保存
Storage::put
Storage::put('file_name', $file);で
$fileを'file_name'という名前で保存することができます。Storage::putFile
Storage::putFile('dir', $file);で
$fileを'dir'に保存することができます。Storage::putFileでは
ファイル名は自動で設定されます。
また、Storage::putFile('dir', $file, 'public');とすることで
$fileを一般公開したいという意思を伝えることができます。Storage::putFileAs
Storage::putFileAs('dir', $file, 'file_name');で
$fileを'dir'に'file_name'という名前で保存することができます。Storage::putFileAsでは自分でファイル名は設定することができます。ファイル書き込み
Storage::prepend
Storage::prepend('file_name', 'hogegeeeee');で
file_nameの先頭にhogegeeeeeを書き込むことができます。Storage::append
Storage::append('file_name', 'fugagaaaaaa');で
file_nameの末尾にfugagaaaaaaを書き込むことができます。ファイルのコピー
Storage::copy
Storage::copy('old dir/file_name', 'new dir/file_name');で
old dirにあるfile_nameをnew dirにコピーすることができます。ファイルの移動
Storage::move
Storage::move('old dir/file_name', 'new dir/file_name');で
old dirにあるfile_nameをnew dirに移動することができます。
また、Storage::move('file_name', 'new_file_name');で
file_nameの名前をnew_file_nameに変更できます。ファイル削除
Storage::move
Storage::delete('file_name');で
file_nameを削除することができます。
また、Storage::delete(['file_name', 'file_name2']);で
file_nameとfile_name2を削除することができます。ディレクトリ関連
ディレクトリ内の全ファイルを取得
Storage::files
Storage::files('dir');で
dirの中の全ファイルを配列で返すことができます。Storage::allFiles
Storage::allFiles('dir');で
dirの中のサブディレクトリの中も含めた全ファイルを配列で返すことができます。ディレクトリ内の全ディレクトリを取得
Storage::directories
Storage::directories('dir');で
dirの中の全ディレクトリを配列で返すことができます。Storage::allFiles
Storage:: allDirectories('dir');で
dirの中のサブディレクトリの中も含めた全ディレクトリを配列で返すことができます。ディレクトリ作成
Storage:makeDirectory
Storage:makeDirectory('dir');で
dirという名前のディレクトリを作成することができます。ディレクトリ削除
Storage:deleteDirectory
Storage:deleteDirectory('dir');で
dirという名前のディレクトリを削除することができます。終わりに
今回はStorageを使ったファイルおよびディレクトリ操作についてまとめてみました。
完全に自己満の記事ですが、何かの役に立てれば幸いです。
最後まで見てくれたあなたがだーいすきです。(一度言ってみたかった)
それでは、またどこかで。笑参考文献
- 投稿日:2019-07-04T13:53:35+09:00
N代の人の誕生日の期間を求める
いつ使う
N代の年齢の人を抽出したいが、テーブルには誕生日カラムしかない時に。
コード
$min_age = $generation; // 年代 $max_age = $min_age + 9; $toDay = Carbon::today(); $y = $toDay->year - $max_age - 1; $d = $toDay->day + 1; $startDay = Carbon::parse("{$y}-{$toDay->month}-{$d}"); $y = $toDay->year - $min_age; $endDay = Carbon::parse("{$y}-{$toDay->month}-{$toDay->day}"); $user->whereBetween('birthday', [$startDay, $endDay]); // laravelならこんな感じに。おわり
ちょくちょく使うのでメモです。
年齢をDBの方で持つべきだと思います。
ままならない。
- 投稿日:2019-07-04T12:48:54+09:00
PrettierをPHPでも使う方法
- 投稿日:2019-07-04T11:16:32+09:00
LaravelでSeederを個別に実行する
php artisan db:seed --class={Seederクラス名}
