我正在使用此查询来获取匹配结果:
$result = $this->Customer->CustomersC->find('list', array(
'conditions' => array('CustomersC.company_id IN' => $companyIds),
'fields' => array('CustomersC.customer_id'),
));
如果$companyIds
有多个值,则查询效果很好。这里的查询打印在日志中:
SELECT
CustomersC
。customer_id
FROMproject
。customers_companies
ASCustomersC
WHERECustomersC
。company_id
IN(7,8 ,9,11,15)
但是,如果$companyIds
只有一个值,则会抛出SQL异常。这是查询:
SELECT
CustomersC
。customer_id
FROMproject
。customers_companies
ASCustomersC
WHERECustomersC
。company_id
IN =(&# 39; 7&#39)
请注意在 IN 之后添加了不必要的=(equalTo运算符)。
有人能指出我正确的方向处理这种情况吗?
答案 0 :(得分:2)
您无需在条件中指定IN
。您只需要执行以下操作: -
$result = $this->Customer->CustomersC->find('list', array(
'conditions' => array('CustomersC.company_id' => $companyIds),
'fields' => array('CustomersC.customer_id'),
));
CakePHP将根据条件的值确定您的意思是=
还是IN
。如果您传递数组,它会将条件视为IN
。在您的情况下,它使用=
,但您的条件密钥中有IN
,导致IN =
错误。