2016-01-17 4 views
0

По какой-то причине я не получаю ожидаемый результат при выполнении следующих действий:Laravel Eloquent запрашивая сводную таблицу не уникальный

$cars = Car::query(); 
$cars->whereIsVisible(true); 

# output: $list 
// [2016-01-16 09:30:04] local.INFO: array (
// 0 => 5, 
// 1 => 7, 
// 2 => 9, 
// 3 => 3, 
//) 

$cars->whereHas('specifications', function($query) use ($list) { 
    $query->whereIn('id', ($list)); 
}); 

$cars->get(); 

Что я ожидаю, что я получаю только автомобили, которые имеют все характеристики, которые находятся внутри что $ list, но это неверно. Даже когда я заполняю больше спецификаций, я получаю больший результат. Так что что-то не так.

Я привык к Красноречивому, поэтому я втягиваю запросы. Но это Запрос:

Кто-нибудь видит, где это происходит не так? И как это исправить?

ответ

0

Согласно https://laravel.com/docs/5.1/eloquent-relationships#querying-relations

whereHas просто проверяет, что у вас есть автомобили с предусмотренными характеристиками, не то, что он возвращает те автомобили, которые соответствуют вашим требованиям.

Я думаю, вы должны использовать where напрямую.

Смежные вопросы