在 CakePHP 的 WHERE IN 中使用数组

Posted

技术标签:

【中文标题】在 CakePHP 的 WHERE IN 中使用数组【英文标题】:using array in WHERE IN in CakePHP 【发布时间】:2017-02-24 05:27:58 【问题描述】:

我正在开发 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[]=1&p_t[]=86

我想将$filter_p_t 包含在where 条件中以查找所有IN(1,86)

如何在 CakePHP 3 中将 php 数组用于 WHERE IN 条件?

【问题讨论】:

【参考方案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

【讨论】:

以上是关于在 CakePHP 的 WHERE IN 中使用数组的主要内容,如果未能解决你的问题,请参考以下文章

cakePHP 3.3 在 where() 中转换 typeMap

MySQL 按行数选择 WHERE IN 和 LIMIT

仅使用 WHERE 子句组合 LIKE 和 IN

cakephp中sql查询in

在 cakephp 3 中获取记录时更改字段名称

Cakephp3 ElasticSearch查询Q