Kebenaran capaian ditanya dalam fail model.php dalam Laravel
P粉549412038
P粉549412038 2024-02-26 16:58:05
0
1
481

Saya mempunyai hubungan dan fungsi dalam User.php;

saya
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']);
    }
}

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;
    }]);
    }
}

P粉549412038
P粉549412038

membalas semua(1)
P粉674757114

Saya rasa anda sedang mencari hasManyThrough

hasManyThrough(GrandChildren::class, Children::class);
    }
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan