artisan コマンドを使ってモデルを生成すると app ディレクトリの直下にモデルが生成されます。
$ php artisan make:model Hoge $ ls app/Hoge.php app/Hoge.php
artisan コマンドでモデル名の前にパスを付与することで生成先のディレクトリを指定できます。
$ php artisan make:model Models/Hoge $ ls app/Models/Hoge.php app/Models/Hoge.php
artisan コマンドを使ってモデルを生成すると app ディレクトリの直下にモデルが生成されます。
$ php artisan make:model Hoge $ ls app/Hoge.php app/Hoge.php
artisan コマンドでモデル名の前にパスを付与することで生成先のディレクトリを指定できます。
$ php artisan make:model Models/Hoge $ ls app/Models/Hoge.php app/Models/Hoge.php
今回は記事にタグを付与する機能を追加します。この機能の実装で、多対多のリレーションを学びます。
今回は Route Model Binding 機能を使って、コントローラを修正したいと思います。Route Model Binding とは、今までモデルの id を受け取っていた箇所で、id の代わりに、id に対応するモデルのインスタンスを受け取れる便利な機能です。
今回は、モデルで1対nのリレーションを扱いたいと思います。ユーザーが複数の記事を持つ様に、User モデルと Article モデルを関連付けます。
Laravel では artisan db:seed コマンドを使って、初期データを DB に埋め込むことが可能です。システムに必要な初期データを作成したり、開発で使用するサンプルデータを作成することができます。今回は Articles テーブルに開発で使用するサンプルデータを作成してみます。
Eloquentはモデルの属性を設定したり取得したりする時に、内容を変更できる便利な方法を提供しています。この属性内容を変換するメソッドをアクセッサとミューテータ呼びます。
Eloguent のマスアサインメント機能を使って、テーブルにデータを追加してみます。
下記の create() メソッドに配列で値を渡すことで、1文でテーブルにデータを追加することができます。
App\Article::create(['title' => '3件目の記事', 'body' => '吾輩は猫である', 'published_at' => Carbon\Carbon::now()]);