サンプルコード
例えば、以下のような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)
get-family-data.php
$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のリレーション設定が必要なのでお忘れなく!