Так странно!
Я использую следующий код для создания запроса (Laravel 5.5).Это немного динамично по своей природе.Вот код:
$calls = Media::where('user_id', '=', $user->id)
->where(function($query){
$query->where(function($qq){
$qq->where('some_param', '=', 1)
->where('some_other_param', '=', 'A');
});
$query->orWhere(function($qq){
$qq->where('some_param', '=', 0)
->where('some_other_param', '=', 'B');
});
})
->when(($completedOnly == true), function($q){
$q->where('status', '>=', '8');
$q->where(function($qq){
$qq->where('s3_key', '!=', 0);
$qq->where('s3_key', '!=', '');
$qq->whereNotNull('s3_key');
$qq->whereNotNull('s3_bucket');
});
})
->whereNotNull('some_third_param')
->whereNotNull('some_fourth_param')
->orderBy('sort_param', 'desc')
->offset($start)
->limit($amount)
->get();
return $media;
Я использую отладочную панель Laravel, чтобы выручить меня и убедиться, что запрос создается правильно.Когда я смотрю на показания, я вижу следующее:
select * from `users_media` where `user_id` = '13475' and ((`some_param` = '1' and `some_other_param` = 'A') or (`some_param` = '0' and `some_other_param` = 'B')) and `status` >= '8' and (`s3_key` != '0' and `s3_key` != '' and `s3_key` is not null and `s3_bucket` is not null) and `some_third_param` is not null and `some_fourth_param` is not null and `users_media`.`deleted_at` is null order by `sort_param` desc limit 25 offset 0
Когда я подключаю это к своему клиенту БД для проверки запроса, я вижу данные, возвращенные, как я и ожидал.
Однако, когда я пытаюсь получить данные в Laravel и Eloquent, я получаю пустую коллекцию.Я не понимаю, почему это происходит.Если запрос работает с моим клиентом, почему я получаю пустую коллекцию от Eloquent?
Справка!