0
我有2个模型:MandrillEmail(电子邮件日志)和客户端。我想找到的客户名单,要么:CakePHP OR条件问题
- 尚未发送特定电子邮件
- 或已被送到特定的电子邮件(email_content_id 5 =),但最后一个被送到更大的超过180天前。
最终,我想设置它以安排每隔180天发送一次电子邮件。我可以轻松完成第一项任务(检查是否未收到电子邮件)。代码如下(这个伟大的工程):
$options['joins'][] =
array('table' => 'mandrill_emails',
'alias' => 'MandrillEmail',
'type' => 'LEFT',
'conditions' => array(
'MandrillEmail.client_id = Client.id',
"MandrillEmail.email_content_id = 5"
)
);
$options['conditions'][] = array(
'MandrillEmail.id is NULL'
);
不过,我不完全知道如何修改查询也检查上面的第二个声明。下面是我在哪里:
// check to see if the email HAS NOT been sent, or if it has, that it has been greater than 180 days
$options['conditions'][] = array(
'OR' => array(
'MandrillEmail.id is NULL',
array(
"MandrillEmail.status" => 'SENT',
"MandrillEmail.created <" => $today_minus_180days
)
)
);
另一件事要记住,这个电子邮件应每180天进行传送,所以OR语句检查应该只检查最后一个条目。
请问您第一个实际工作送?做一个左连接(貌似从客户模型?)应该返回所有的客户端,不管他们与MandrillEmail的关联或缺乏。 – Dave
什么版本的Cake,以及您第二次尝试生成什么查询?你能否包括整个事情,以便我们可以看到的不仅仅是条件?至少你在哪个模型上运行这个..等等。 – Dave