Как я могу загружать только одну из множества отношений?
У меня есть две модели Application
& Applicant
Models\Application.php
public function applicants() {
return $this->belongsToMany(Applicant::class);
}
public function oneApplicant() {
return $this->applicants()->first();
}
Я хочу разбить страницы на приложения и хочу загрузить только одного кандидата (если он есть).
return Application::stage( $stages )
->stagenot($stageNot)
->refered( $refered, $term )
->with(['oneApplicant'])
->orderBy('created_at','desc')->paginate( $count );
Но это не работает. Получение первого результата, подобного этому, return $this->applicants()->first()
приведет к ошибке Call to undefined method Illuminate\Database\Query\Builder::with()
Если я также поставлю ограничение вместо первого return $this->applicants()->limit(1)
, то в последней коллекции будет показан только один кандидат.
Я также попытался изменить запрос непосредственно при активном вызове загрузки, чтобы получить первую строку
return Application::with(['applicants', => function( $query ) {
$q->first();
}])->orderBy('created_at','desc')->paginate( $count );
Но результат такой же, как добавление limit(1)
непосредственно в отношении, оно добавит только один заявитель на последний элемент из коллекции, а другой элемент имеет пустое значение массива
Может кто-нибудь помочь:)
Спасибо