Laravel5.5 ネストしたリレーション先から取得する
目的としては、カテゴリーテーブルにアクセスしてリレーションしている子テーブルの紐づいた情報も取得したい。
条件としては、子テーブルがパラメーターを持っていてそれにあわせたデータだけを抽出したい。その持ってるパラメーターの定義は別のテーブルでされている。
クエリ的には、要するにリレーション先のリレーション先(ネストしたリレーション)にクエリかけたい。
・paramsテーブル
・system_categoriesテーブル
・systemsテーブル
paramsテーブルでsystemsテーブルから取得したい紐づきを定義している。systemsの親
system_categoriesはsystemsの種類,systemsの親。
systemsはparam_idとsystem_categories_idを持つ。両方ともの子テーブル。
paramsテーブルのモデル。
public function getList($param_id)
{
return $this->object
->with('systemCategory','systemCategory.system')
->whereHas('systemCategory.system', function($q) {
$q->where('param_id', "=", $param_id);
})
->get();
}
モデルであらかじめリレーションを組んである状態
モデルにsystemCategoryとsystemというリレーションを用意した。
whereHasでネストしたリレーション先があるとき
クロージャーでリレーション先に対しての条件をかける。
とか書いたけどここまで全部間違いでした。
パラメーターテーブルとカテゴリーが紐づきがないからリレーションできまへん。
ネストしたリレーション先から取得するまではいいとしても
リレーション先の結果までを変える方法がわからぬ
0
投稿者:通りがりすの人 / 投稿日:2018-05-25 12:05:27 / PV数:3030 / コメント数:0
コメント 0
コメント投稿