Laravel Двухуровневый запрос отношения - PullRequest
0 голосов
/ 13 октября 2018

У меня есть структура БД ...

Labels -> LabelPerson <- People -> Samples

У меня также есть все необходимые отношения в моих моделях.Как я могу получить все samples идентификаторы, если я знаю только label_id?

Метка

public function people()
{
    return $this->belongsToMany('App\Person');
}

Человек

public function labels()
{
    return $this->belongsToMany('App\Label')->withTimestamps();
}
public function samples()
{
    return $this->hasMany('App\Sample');
}

Образец

public function person()
{
    return $this->belongsTo('App\Person');
}

Я пытаюсь использовать hasManyThrough в модели Label

public function samples()
{
    return $this->hasManyThrough('App\Sample', 'App\Person');
}

Но безрезультатно ...

Столбец не найден: 1054 Неизвестный столбец 'people.label_id' в 'списке полей' (SQL: выберите samples. *, people. label_id изsamples внутреннее соединение people на people. id = samples. person_id где people. label_id = 2) ",

Я используюЛаравел 5.7.9.

1 Ответ

0 голосов
/ 13 октября 2018

Вы можете получить их, используя метод whereHas(), что обеспечивает фильтрацию записей по отношению

Sample::whereHas("person.labels",function ($query) use ($label_id){
      $query->where("label_id",$label_id);
    })->get()->pluck("id");         
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...