1000記事以上を目指すブログ【Laravel5.6】Eloquent利用時にまず知っておきたいこと2018年5月29日2018年5月29日PHP358view0件PHPHOMEPHP【Laravel5.6】Eloquent利用時にまず知っておきたいこと使い始めのときに便利すぎて逆に混乱することが多かった為、ある程度触った今改めてまとめ。過去の記事内容との重複箇所あり。公式をちゃんと読んでおくとORMのEloquentの旨みが増える。モデル名とテーブル名の関係Eloquentでは明示的に指定しない限り、クラス名を複数形の「スネークケース」にしたものが、テーブル名として使用される。Shopというモデルを作るときは、勝手にshopsというテーブルを指定してくれる。これに従った命名規則でテーブル設計を行っておくとわざわざEloquentでテーブルを指定する必要がなくなる。主キーに関しても規約があり、idというカラムが主キーであると勝手に認識してくれる。idが主キーではない場合には、オーバーライドする必要がある。'(主キーのカラム名)';リレーションの定義テーブル同士をJOINするときの記述方法。SQL書くのに慣れていると逆に混乱するかも。以下2つのテーブルがある場合ユーザーテーブル(主テーブル)idnameattribute属性テーブル(従テーブル)user_idtypeユーザーモデルが属性モデル一つと関係している場合は、ユーザーモデルで属性メソッド(attribute)を設置し、hasOneメソッドを返す。}}逆に属性モデルからユーザーモデルを取得する場合は、属性モデルでユーザーメソッドを設置し、belongsToメソッドを返す。}}関連付け自体は上記のように単純だが、肝心のJOINするカラムを指定していない、のに上記でもうまくいくことになる。例2ではEloquentでAttributeモデルはuser_idに一致するidを持つUserモデルを見つけようとするから。要は勝手に関連する○○_idを見に行ったりしてくれる。これについても命名規則に従うことでJOINするカラムの指定も省くことができる。'other_key');}Eagerローディング前項のようにテーブルが関連付けられている場合、いつものようにコントローラーで以下のようにデータを取得すると、まずは全ての本を取得し、そのあとその著者を取得するという処理になる為パフォーマンスがよくない。$book->author->name;}複数のリレーションに対するwithメソッドの指定方法は、引数を追加で渡すだけ。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。WordPress.。