2014-10-16 4 views
0

Я пытаюсь получить все Shop s, у которых есть один из $item_ids = array('1', '17');.whereHas не работает как ожидалось

Однако код ниже не делает этого, как я ожидал, он просто передает мне все магазины.

$shops = Shop::whereHas('items', function($query) use ($item_ids) { 

        $query->where('items.id', '=', $item_ids[0]); 

        foreach(array_slice($item_ids, 1) as $item_id) { 
         $query->orWhere('items.id', '=', $item_id); 
        } 
       }) 
       ->get(array('shops.id', 'shops.shop_name', 'shops.lat', 'shops.lng')); 

я я только получить Shop с с одной из указанных Item с?

ответ

1

Вы должны лучше использовать:

$shops = Shop::whereHas('items', function($query) use ($item_ids) {  
    $query->whereIn('id', $items_ids); 
})->get(); 

или

$shops = Shop::whereHas('items', function($query) use ($item_ids) {  
    $query->whereIn('id', $items_ids); 
})->select('shops.id', 'shops.shop_name', 'shops.lat', 'shops.lng')->get(); 
Смежные вопросы