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粉6747571142024-02-27 15:27:52
あなたは hasManyThrough を探していると思います
hasManyThrough(GrandChildren::class, Children::class); } }返事0