Heim > Fragen und Antworten > Hauptteil
Ich habe eine Beziehung und eine Funktion in meiner 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']); } }
Das ist mein Controller.php:
public function allChildren() { $user = User::where('id', 3)->with(['grandchildren' => function ($query) { $query->where('first_name', 'rose'); } ])->first(); return $user; }
Wenn ich das Enkelkind anhänge, werden alle Knoten dieses Baums zurückgegeben. Ich möchte eine Bedingung zuweisen und den Knoten mit dem Namen „Rose“ erhalten, aber ich kann dies nur für die erste Ebene tun; wie greife ich auf diese Abfrage zu:
$query->where('first_name', 'rose');
Ist es möglich, auch in User.php eine Abfrage für andere in meiner Enkelfunktion festzulegen?
Ich möchte so etwas machen:
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; }]); } }
P粉6747571142024-02-27 15:27:52
我认为您正在寻找 hasManyThrough
hasManyThrough(GrandChildren::class, Children::class); } }