использование массива в WHERE IN в CakePHP

#cakephp #where-in #cakephp-3.2

#cakephp #где-в #cakephp-3.2

Вопрос:

Я работаю над CakePHP 3.2

Я хочу использовать массив в запросе WHERE IN ()

Код выглядит так

 $filter_p_t = $this->request->query('p_t');

$pros10 = $this->Products->find()
 ->where([
   'SellerProducts.stock >' => 0,
   'SellerProducts.status' => 1,
   'Products.p_status' => 1,
 ])
 ->contain([
   'SellerProducts',
   'ProductTypes.Subcategories.Categories',
 ]);
 

Вот $filter_p_t массив из url с параметром

 /products/display/1?p_t[]=1amp;p_t[]=86
 

Я хочу включить $filter_p_t в where условие, чтобы найти все IN(1,86)

Как я могу использовать php-массив для условия WHERE IN в CakePHP 3?

Ответ №1:

Вы можете использовать IN ключевое слово непосредственно после столбца. Предполагается, что $filter_p_t это массив, подобный array(1, 86) .

 ->where(['id IN' => $filter_p_t]);
 

http://book.cakephp.org/3.0/en/orm/query-builder.html#automatically-creating-in-clauses