1

我正在使用此查询来获取匹配结果:

$result = $this->Customer->CustomersC->find('list', array(
  'conditions' => array('CustomersC.company_id IN' => $companyIds),
  'fields' => array('CustomersC.customer_id'),
));

如果$companyIds有多个值,则查询完美。这是日志中打印的查询:

选择CustomersCcustomer_idproject。 在customers_companies哪里。在 (7, 8, 9, 11, 15)CustomersCCustomersCcompany_id

但是,如果$companyIds只有一个值,则会引发 SQL 异常。这是查询:

选择CustomersCcustomer_idproject。 在customers_companies哪里。IN = ('7')CustomersCCustomersCcompany_id

请注意在IN之后添加的不必要的 = (equalTo 运算符) 。

有人可以指出我处理这种情况的正确方向吗?

4

1 回答 1

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 =错误。

于 2015-11-02T11:18:10.293 回答