我的 User.php 中有一个关系和一个函数;
class User extends Model { public function children() { return $this->hasMany(self::class, 'level1_user_id') ->select(['id', 'first_name', 'last_name', 'level1_user_id']); } public function grandchildren() { return $this->children()->with(['grandchildren']); } }
这是我的controller.php:
public function allChildren() { $user = User::where('id', 3)->with(['grandchildren' => function ($query) { $query->where('first_name', 'rose'); } ])->first(); return $user; }
当我附加孙子时,它返回该树的所有节点; 我想分配一个条件并获取名称为“rose”的节点,但我只能为第一级执行此操作;我如何访问此查询:
$query->where('first_name', 'rose');
在我的 User.php 中的孙子函数中也可以为其他人设置查询吗?
我想做这样的事情:
class User extends Model { public function children() { return $this->hasMany(self::class, 'level1_user_id') ->select(['id', 'first_name', 'last_name', 'level1_user_id']); } public function grandchildren(Query $inputQuery) { return $this->children()->with(['grandchildren' => function ($query) use ($inputQuery) { $query->$inputQuery; }]); } }
我认为您正在寻找 hasManyThrough