我正在尝试获取所有具有Shop之一的$item_ids = array('1', '17');

但是,下面的代码并没有像我期望的那样执行-它只是交给了我所有的商店。

$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吗?

最佳答案

您应该使用:

$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();

关于php - 无法正常工作的地方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26408370/

10-11 01:43