У меня есть 2 модели: MandrillEmail (электронный журнал) и клиенты. Я хочу, чтобы найти список клиентов, которые либо:CakePHP ИЛИ Вопрос о состоянии
- НЕ был отправлен конкретным письмо,
- или был отправлен конкретной электронной почта (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'
);
Однако, я точно не знаю, как изменить запрос, чтобы проверить также 2-ое заявление выше. Вот где я нахожусь:
// 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 дней, поэтому ИЛИ проверки заявление следует проверить только последняя запись.
ли на самом деле работают ваши первые один? Выполнение левого соединения (по-видимому, от модели клиента?) Должно возвращать всех клиентов независимо от их ассоциации или отсутствия в MandrillEmail. – Dave
Какая версия Cake и какой запрос является вашей второй попыткой? Можете ли вы включить все это, чтобы мы могли видеть больше, чем просто условия? По крайней мере, какая модель вы используете на .... – Dave