У меня никогда не было проблем с этим, но сейчас у меня есть ситуация здесь:
В приведенном ниже коде необходимо отфильтровать некоторые данные на основе параметра запроса с именем «status», а затем использовать связанную область для фильтрации, но по какой-то причине область не работает внутри where, только снаружи.
return Vacancy::whereCompanyId($id)
->where(function($query) use ($statusFilter) {
if (!empty($statusFilter) && !empty($statusFilter['status'])) {
if ($statusFilter['status'] == 'published') {
$query->published();
} else if ($statusFilter['status'] == 'drafted') {
$query->drafted();
} else if ($statusFilter['status'] == 'finished') {
$query->where('vacancy_status_id', 3);
} else if ($statusFilter['status'] == 'deactivated') {
$query->deactivated();
}
}
})
->orderBy('id','DESC')
->paginate(3);
Область применения:
public function scopePublished($query)
{
return $query->where('vacancy_status_id', '=', VacancyStatusEnum::Published);
}
public function scopeDraft($query)
{
return $query->where('vacancy_status_id', '=', VacancyStatusEnum::Draft);
}
public function scopeFinished($query)
{
return $query->where('vacancy_status_id', '=', VacancyStatusEnum::Done);
}
public function scopeDeactivated($query)
{
return $query->where('vacancy_status_id', '=', VacancyStatusEnum::Disabled);
}
Что я делаю не так?