#php #laravel #eloquent
Вопрос:
У меня есть этот метод на моей модели «Работодатель».:
public function job_offers() {
return $this->hasMany('AppJobOffer');
}
public function shared_job_offers() {
return $this->job_offers()->where(function ($query) {
$query->where('subscription', 3)->where('disable_share', false);
})->orWhere(function ($query) {
$query->where('subscription', '!=', 3)->where('manual_share', true);
});
}
Я думал, что это сработает нормально, но в итоге мне дают модели, которые даже не связаны с моей моделью. Например, идентификатор модели равен 37, и он дает мне отношения всех моделей (например, идентификатор 6).
Есть какие-нибудь идеи о том, почему это могло произойти?
Ответ №1:
Я думаю, что вы испытываете неожиданное поведение из-за того, что не группируете » где » и » Где » в одном вызове. Работает ли это?
public function shared_job_offers() {
return $this->job_offers()->where(function ($query) {
$query->where([
['subscription', '=', 3],
['disable_share', '=', false]
])->orWhere([
['subscription', '!=', 3],
['manual_share', '=', true]
]);
});
}