私は以下のように私のテーブルに開始日と終了日を持っています。forloopのfind関数を使用して電子メールを送信するPHPコード
STARTDATE = 2016年1月1日
ENDDATE = 2016年6月20日
今私は、終了日から1ヶ月前に自動的に電子メールを送信します。
すべてが
...細かい...メールも送信されて働いているしかし、私の問題は、2行は、その後のメールの両方に行っている私の条件にテーブルに一致がある場合、私は複数のユーザーに電子メールを送信したいですユーザー。
しかし、私のコードは、単一のユーザーだけに電子メールを送信します。すべてのユーザーではありません。 私はすべてのユーザーに電子メールが1つずつ届きたいと思っています。
public function certificateExpired()
{
$this->autoRender = False;
$this->loadModel('Certificate');
$data = $this->Certificate->find("all", array(
'recursive' => -1, // should be used with joins
'fields' => array('User.*', 'Certificate.*'),
'joins' => array(
array(
'table' => 'users',
'alias' => 'User',
'type' => 'LEFT',
'conditions' => array('User.id = Certificate.user_id')
)
),
'conditions' => array('Certificate.is_expirable' => 1,'Certificate.status' => 1)
));
foreach ($data as $row) {
$currentdate = date("Y-m-d");
$date = $row['Certificate']['end_date'];
$newdate = strtotime($date .' -1 months');
$enddate = date('Y-m-d', $newdate);
if ($currentdate >= $enddate) {
//For sending email
$data['email'] = $row['User']['email'];
$data['name'] = $row['User']['name'];
$data['document_name'] = $row['Certificate']['name'];
$data['templateid'] = 19;
$send_mail = $this->EmailFunctions->certificateExpiredTemplate($data);
if ($send_mail) {
$this->redirect(array('controller' => 'Dashboards', 'action' => 'shipperDashboard'));
}
}
}
}
あなたのリダイレクトをforeachループの外に置いてください –
foreachループの外側で '$ this-> redirect(array( 'controller' => 'ダッシュボード'、 'アクション' = '' shipperDashboard '));'を入れてください。 –
大丈夫私はテストしています... –