Saya mempunyai hubungan dan fungsi dalam User.php;
sayaclass 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']); } }
Ini pengawal saya.php:
public function allChildren() { $user = User::where('id', 3)->with(['grandchildren' => function ($query) { $query->where('first_name', 'rose'); } ])->first(); return $user; }
Apabila saya menambah cucu, ia mengembalikan semua nod pokok itu; Saya ingin menetapkan syarat dan mendapatkan nod dengan nama "rose" tetapi saya hanya boleh melakukan ini untuk tahap pertama; bagaimana saya boleh mengakses pertanyaan ini:
$query->where('first_name', 'rose');
Adakah mungkin untuk menetapkan pertanyaan untuk orang lain dalam fungsi cucu saya dalam User.php juga?
Saya nak buat macam ni:
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; }]); } }
Saya rasa anda sedang mencari hasManyThrough