検索

ホームページ  >  に質問  >  本文

Laravelのmodel.phpファイルでクエリされるアクセス許可

User.php にリレーションシップと関数があります;

class ユーザーがモデルを拡張する
{
    パブリック関数children()
    {
        return $this->hasMany(self::class, 'level1_user_id')
            ->select(['id', 'first_name', 'last_name', 'level1_user_id']);
    }

    パブリック関数孫()
    {
        return $this->children()->with(['grandchildren']);
    }
}

これは私のcontroller.phpです:

パブリック関数 allChildren()
{
    $user = User::where('id', 3)->with(['grandchildren' =>
        関数 ($クエリ) {
            $query->where('first_name', 'rose');
        }
    ])->first();
    $user を返します。
}

孫を追加すると、ツリーのすべてのノードが返されます。 条件を割り当てて「rose」という名前のノードを取得したいのですが、これは最初のレベルでしか実行できません。このクエリにアクセスするにはどうすればよいですか:

$query->where('first_name', 'rose');

User.php の孫関数で他のユーザーに対するクエリを設定することもできますか?

次のようなことをしたいです:

class ユーザーがモデルを拡張する
{
    パブリック関数children()
    {
        return $this->hasMany(self::class, 'level1_user_id')
            ->select(['id', 'first_name', 'last_name', 'level1_user_id']);
    }

    パブリック関数の孫(Query $inputQuery)
    {
        return $this->children()->with(['grandchildren' => function ($query) use ($inputQuery) {
        $query->$inputQuery;
    }]);
    }
}

P粉549412038P粉549412038277日前490

全員に返信(1)返信します

  • P粉674757114

    P粉6747571142024-02-27 15:27:52

    あなたは hasManyThrough を探していると思います

    hasManyThrough(GrandChildren::class, Children::class);
        }
    }

    返事
    0
  • キャンセル返事