Laravel5.5 ネストしたリレーション先から取得する

2018-05-25

3030

通りがりすの人

関連メモ

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

sponsor

コメント 0

コメント投稿