У меня есть метод фильтра в моем контроллере, который очень прост. Он корректно фильтрует по проекту и клиенту, но статусная часть просто игнорируется. Делать это прямо на базе данных работает. Я подозреваю, что это связано со статусом, являющимся строкой. Допустимые состояния: «C» и «O». Никогда не сталкивался с этим раньше. Заранее спасибо!
Редактировать: Я хочу, чтобы цепочки вызовов назывались "И", мне нужны результаты, чтобы удовлетворить все 3 критерия. Тем не менее, он возвращает событие всех моделей, если я сократил запрос до: Job::with(['users', 'project', 'files'])
->where('status', $status);
Как это может произойти? Я не понимаю.
Редактировать 2: Ад, даже Job :: where ('status', $ status) -> get (); не может принести записи, где статус = 'C' или 'O', в то время как он работает, если я запрашиваю прямо в базе данных
public function doFilter($customer_id, $project_id, $status)
{
$jobs = collect();
if ($customer_id || $project_id || $status) {
$query = Job::query()->with(['users', 'project', 'files']);
$query->when($project_id, function ($query, $project_id) {
return $query->where('project_id', $project_id);
});
$query->when($customer_id, function ($query, $customer_id) {
return $query->where('customer_id', $customer_id);
});
$query->when($status, function ($query, $status) {
return $query->where('status', $status);
});
// dd($status);
$jobs = $query->get();
}
return $jobs;
}