Как выполнить два, где условия в laravel, где order_id одинаков, а product_ids в массиве - PullRequest
0 голосов
/ 12 марта 2020

Итак, у меня есть таблица order_products структура таблицы orders_products

У меня есть id заказа и несколько products_id. Теперь я хочу получить результат на основе orders_id и products_id, например

orders_id =10 , products_ids = array(15,20,21,23)

$result = array();

 foreach (products_ids as $value) {
  $result=DB::table('ordered_products')->where('orders__id','=',10)->where('products_id','=',$value)->get();
  }

Я выполнил запрос, но получаю только одну строку. Пожалуйста, помогите мне выполнить запрос.

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Вы должны использовать where для order_id и whereIn для product_ids

$result = DB::table('ordered_products')
            ->where('orders__id',10)
            ->whereIn('products_id', $products_ids)
            ->get();
1 голос
/ 12 марта 2020

В данный момент вы выполняете запрос для каждого продукта и каждый раз перезаписываете результат $. Вы можете избежать foreach l oop и получить все результаты, используя whereIn.

$orders_id =10;
$products_ids = array(15,20,21,23)

$result=DB::table('ordered_products')
   ->where('orders__id','=',10)
   ->whereIn('products_id',$products_ids)
   ->get();
...