#php #laravel
Вопрос:
У меня есть модель, которая имеет отношение к «где» и «если». Мне нужно получить все модели, в которых количество отношений > 1.
Когда я пытаюсь получить его с помощью «withCount», у меня получаются модели, у которых отношения имеют 0 к «shared_job_offers_count», когда у них должно быть 1. Однако для некоторых моделей это работает правильно.
Я заметил, что это происходит, когда «$this->issuebscribedpremium()» в «если» является истинным.
RELATIONSHIP
public function shared_job_offers() {
if($this->isSubscribedPremium()) {
return $this->hasMany('AppJobOffer')->where('disable_share', false);
} else {
return $this->hasMany('AppJobOffer')->where('manual_share', true);
}
}
RETRIEVING THE RESULTS
AppEmployer::withCount('shared_job_offers')->get()->where('shared_job_offers_count', '>', 0)
резюмировать:
withCount возвращает 0 для некоторых моделей, 1 для других он возвращает 0 в основном, когда «$this->issuebscribedpremium()» верно, я могу получить все правильные отношения, если просто получу его напрямую.
Есть идеи?
Комментарии:
1. @TimLewis я получаю «Столбец не найден: 1054 Неизвестный столбец «shared_job_offers_count»
2. Ах, вот оно что:
AppEmployer::withCount('shared_job_offers')->has('shared_job_offers', '>', 1)->get();
. Это должно возвращать толькоEmployer
записи сshared_job_offers
количеством отношений 1 или более.