Heim  >  Fragen und Antworten  >  Hauptteil

Zugriffsberechtigungen werden in der Datei „model.php“ in Laravel abgefragt

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粉549412038P粉549412038235 Tage vor461

Antworte allen(1)Ich werde antworten

  • P粉674757114

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

    我认为您正在寻找 hasManyThrough

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

    Antwort
    0
  • StornierenAntwort