Laravel содержит отношение отношения - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть отношения

Trainee->hasMany->Poke
Company->hasMany->Poke

Poke->belongsTo->Trainee
Poke->belongsTo->Company

Теперь я хочу проверить, содержит ли Trainee Poke из Company. Как я могу сделать это самым чистым? Я бы предпочел что-то вроде $trainee->containsPokeFrom($company);, потому что я использую это в своем блейд-файле, но если это не вариант, тогда все в порядке.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вы бы использовали метод exists() в методе отношений pokes:

class Trainee extends Model
{
    public function pokes()
    {
        return $this->hasMany(Poke::class);
    }

    public function containsPokeFrom(Company $company)
    {
        return $this->pokes()->where(function ($poke) use ($company) {
            $poke->where('company_id', $company->getKey());
        })->exists();
    }
}
0 голосов
/ 19 ноября 2018

Вы можете получить данные методом with().

Пример:

public function getTrainee()
{
    return Trainee::with('Poke.Company')->get();
    // Here you will find all trainee which associated with multiple pokes which belongs to a company
}
...