CakePHP-查找未返回预期结果的条件
我有一个发票模型,它有两个字段确定其处理状态。一个是技师id,一个是处理日期。它们都用于稍有不同的事情,每个都可以为null 我想检索所有那些处理日期为空且技师id为空或与当前用户id相同的发票 我以为我知道我在做什么,但很明显我有周五的事要做,因为我不能让它工作。以下是我目前的情况:CakePHP-查找未返回预期结果的条件,cakephp,Cakephp,我有一个发票模型,它有两个字段确定其处理状态。一个是技师id,一个是处理日期。它们都用于稍有不同的事情,每个都可以为null 我想检索所有那些处理日期为空且技师id为空或与当前用户id相同的发票 我以为我知道我在做什么,但很明显我有周五的事要做,因为我不能让它工作。以下是我目前的情况: $conditions = array( 'Invoice.date_processed' => null, 'Invoice.technic
$conditions = array(
'Invoice.date_processed' => null,
'Invoice.technician_id' => array(null, $user_id)
)
);
我也试过:
$conditions = array(
'Invoice.date_processed' => null,
'OR' => array(
'Invoice.technician_id' => null,
'Invoice.technician_id' => $user_id
)
);
但是,这两种方法都只返回技师id与用户id匹配的发票,而不返回技师id为空的发票(正确过滤了“处理日期”字段)
有人能告诉我我做错了什么吗?我认为解决办法可能是:
$conditions = array(
'OR' =>
array(
array('AND' => array(
array('Invoice.date_processed' => null),
array('Invoice.technician_id' => null)
)),
array('AND' => array(
array('Invoice.date_processed' => null),
array('Invoice.technician_id' => $user_id)
))
)
);
第一个“or”语句不起作用的原因是数组在php中的工作方式,定义一个键两次会覆盖第一个键 所以当你这么做的时候
$conditions = array(
'Invoice.date_processed' => null,
'OR' => array(
'Invoice.technician_id' => null,
'Invoice.technician_id' => $user_id
)
);
更像是这样说的
$conditions = array(
'Invoice.date_processed' => null,
'OR' => array(
'Invoice.technician_id' => $user_id
)
);
在cakephp中执行'OR'语句而不使用过多的'AND'语句的正确方法是
$conditions = array(
'Invoice.date_processed' => null,
'OR' => array(
'Invoice.technician_id' => array(null, $user_id)
)
);
首先创建条件,然后将其分配给查找。请记住,您将需要删除空的条件,这是一个难以读取的缩进。。。您阅读过如何定义
或条件吗?您已经使查找条件更易于阅读,并在代码中将它们分离出来。是的,我读过文档,以前也做过类似的事情——这次似乎没有达到预期的效果!非常感谢。这非常有效。不知道为什么我没想到。谢谢你-我明白你的意思。知道有帮助。