[Laravel Eloquent] with関数で複数テーブルからcolumnを指定して取得(Eager Loading)
サンプルコード
例えば、以下のような3つの親子関係テーブルがあった場合。
・grand_fathers(id, name, age, created_at, updated_at)
・fathers(id, grand_father_id, name, age, created_at, updated_at)
・children(id, father_id, name, age, created_at, updated_at)
$family = GrandFather::with(['fathers' => function ($fathers_query) {
$fathers_query->with(['children' => function ($children_query) {
$children_query->select(['id', 'father_id', 'name', 'age']); //「father_id」は必ず必要!
}])->select(['id', 'grand_father_id', 'name', 'age']); //「grand_father_id」は必ず必要!
}])
->where('id', '1')
->get(['id', 'name', 'age']);
これで、各テーブルからcolumnを指定して取得することができます。
調べていろいろ試しましたが、納得のいくものがなかなか見つからず、
たぶんこれが一番キレイじゃないかなー、、?
もっといいやり方があればコメントいただきたいです。
リレーション設定は忘れずに!
もちろんですが、withを使用する前にはModelのリレーション設定が必要なのでお忘れなく!
Author And Source
この問題について([Laravel Eloquent] with関数で複数テーブルからcolumnを指定して取得(Eager Loading)), 我々は、より多くの情報をここで見つけました https://qiita.com/yusuke5/items/a5c516b368e74a80401a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .