[Laravel] createManyを使用した複数代入
メソッドの存在を知らなかったのでメモ。 LaravelのEloquentで1対多の関係にあるテーブルに対して複数件のレコードを挿入します。 ユーザーに対して複数のタスクを登録するサンプルです。 ユーザー周りは既存のものをそのまま利用し、タスクモデルとマイグレーションファイルを作成します。 コントローラーを作成してルーティングを変更します。 へアクセスすると、新しいユーザーが作成され、ユーザーに紐づくタスクが追加されます。
メソッドの存在を知らなかったのでメモ。 LaravelのEloquentで1対多の関係にあるテーブルに対して複数件のレコードを挿入します。 ユーザーに対して複数のタスクを登録するサンプルです。 ユーザー周りは既存のものをそのまま利用し、タスクモデルとマイグレーションファイルを作成します。 コントローラーを作成してルーティングを変更します。 へアクセスすると、新しいユーザーが作成され、ユーザーに紐づくタスクが追加されます。
Laravelでのデータベース更新クエリでを更新したくない、カラムが存在しない場合など。 既存のEloquentモデルでは下記の用に自動で挿入されます。 を更新したくないモデルで以下のようにオーバーライドします。 に関しても同じように対応可能です。
Laravel5.4での認証周りで発火されるイベントが変わっていたのでまとめ。 各プロパティへは でアクセス出来る。 \Illuminate\Auth\Events\Registered Illuminate/Auth/Events/Registered | Laravel API ユーザーが作成された時に発火 \Illuminate\Auth\Events\Attempting Illuminate/Auth/Events/Attempting | Laravel API ユーザーが認証を試みた場合に発火 \Illuminate\Auth\Events\Failed Illuminate\Auth\Events\Failed | Laravel API ユーザーが認証を試みたが、失敗した場合に発火 \Illuminate\Auth\Events\Login Illuminate\Auth\Events\Login | Laravel API ユーザーが認証を試みて、成功した場合に発火 \Illuminate\Auth\Events\Logout Illuminate\Auth\Events\Logout | Laravel API ログアウトした場合に発火 \Illuminate\Auth\Events\Authenticated Illuminate\Auth\Events\Authenticated | Laravel API クッキーから自動ログインした場合や、システム側でログイン状態にした場合に発火 \Illuminate\Auth\Events\Lockout Illuminate\Auth\Events\Lockout | Laravel API ユーザーがロックされた場合に発火
例えば、「public」から「publichtml」へ変更する場合。 とりあえずフォルダ名前を変えてみると・・ と、怒られます。 原因 vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php ここ(chdir($this->laravel->publicPath());)でpublicフォルダが存在しないと。 パスはどこで登録されている? bootstrap/app.php ここでLaravelの各パスが登録されている。 Illuminate/Foundation/Applicationクラスを見てみると、 vendor/laravel/framework/src/Illuminate/Foundation/Application.php と、パワーコーディングされており、変数等では上書きできない模様。 publicpath()をOverrideする Illuminate\Foundation\Applicationを継承した、app/Application.phpを作成します。 app/Application.php 作成した\App\Applicationクラスを読み込む様に編集します。 artisanコマンドで確認 publichtmlフォルダが読み込まれました! ※ ディレクトリの階層を変更する場合は、public/index.php内にも変更が必要です。
PHPでのJavascriptのServer Side Renderringの方法としては、 1. PHPで行う 2. Node.jsなどでパースしたものを受け取る のどちらかで実装しているみたい。 今回は1.のPHPで行ってみます。 便利そうなパッケージがあったので使います。 react-laravel Composerでインストール Installationの項目にあるをcomposer.jsonへ追記してreact-laravelをインストール。 にのプロバイダーを追記します。 なお、PHPのExtenstionとしてv8jsが必要 NPMのインストール Reactを利用するだけであれば必要なさそうでしたが、JSXを利用する為には1度コンパイルする必要があるので必要なものを入れます。 gulpの設定 react-jsでのJavascriptの読み込みが、デフォルトではなので、ここにJavascriptファイルがコンパイルされるよう追記します。 コンポーネント作成 以下のファイルを作成してビルドします。 作成後にコンパイル Bladeファイルの編集 動作確認 HTMLソース上に表示されました! また、見出し部分をクリックするとアラートが表示されることも確認。
\Illuminate\Console\Command クラスではスクリプト実行時にコンソール上にログなどを出力するメソッドがあります。 各メソッドにより、コンソール上で確認しやすくなるようにメッセージを色付けしてくれます。 バッチ処理などに使うJobや、Seeder等で利用されています。 サンプル: また、コンソール上で対話可能なメソッドも用意されており、 入力によって異なる動作をする場合などに役立ちます。 $this->command->confirm() 確認を答うメソッドです。 戻り値として true | false が返却されます。 サンプル: 実行: $this->command->ask() コンソールへの入力を求めるメソッドです。 戻り値として入力された内容が返却されます。 サンプル: 実行: $this->command->askWithCompletion() 入力されるであろう内容を事前に登録しておくことで、コンソールでの入力を補完してくれます。 戻り値として入力された内容が返却されます。 ※ $this->command->anticipate() のエイリアスです。 サンプル: 実行: を入力すると、を補完してくれるはずです。 $this->command->secret() コンソールへの入力を求めるメソッドですが、入力内容が表示されません。 戻り値として入力された内容が返却されます。 サンプル: 実行: $this->command->choice() 用意した候補から、コンソール上で選択できます。 戻り値として選択された内容が返却されます。 サンプル: 実行: 最後に Laravel上ではクラスを参照していますが、 で定義されている にはが代入されており、 コンソール出力に関する動作はこちらを参考に。