Php foreach循环不使用laravel队列
我使用Php foreach循环不使用laravel队列,php,laravel-4,Php,Laravel 4,我使用sync(本地驱动程序)在EmailCampaignController的update方法中推高队列,该方法使用同一控制器名为emailQueue的另一种方法 像这样 Queue::push('EmailNewsletterController@emailQueue', array('campaign_id' => $campaign_id)); emailQueue使用一个foreach循环,在该循环正确运行一次之后,它会给出错误,就好像$campaign\u id未定义一样 以
sync
(本地驱动程序)在EmailCampaignController
的update
方法中推高队列,该方法使用同一控制器名为emailQueue
的另一种方法
像这样
Queue::push('EmailNewsletterController@emailQueue', array('campaign_id' => $campaign_id));
emailQueue
使用一个foreach
循环,在该循环正确运行一次之后,它会给出错误,就好像$campaign\u id
未定义一样
以下是emailQueue
方法
public function emailQueue($job, $data) {
// Queue Starts here
$emailCampaign = EmailCampaign::find($data['campaign_id']);
$emailCampaign->status = 'In Progress';
$emailCampaign->last_activity = Carbon::now();
$emailCampaign->save();
$data = $emailCampaign->emailCampaignNewsletter;
$contacts = $emailCampaign->contactList->contacts;
foreach ($contacts as $contact) {
$emailBody = [
'message' => [
'subject' => $data['email_title'],
'html' => $data['email_body'],
'from_email' => $data['from_email'],
'to' => [['email' => $contact['email_address']]]
]
];
$response = Mandrill::request('messages/send', $emailBody);
EmailCampaignRecord::create([
'email_campaign_id' => $data['campaign_id'],
'mandrill_email_id' => $response[0]->_id,
'status' => $response[0]->status,
'to_email' => $contact['email_address']
]);
$contact->last_activity = Carbon::now();
$contact->save();
}
$emailCampaign->status = 'Sent';
$emailCampaign->save();
$job->delete();
// Ends here
}
我做错了什么?为什么它不能像正常循环一样工作?问题在于
电子邮件活动id
为空,因为$data['campaign\u id']
为空正确的外键为$data['email\u campaign\u id']
这就是停止进程的原因-我应该在将其放入队列之前测试它
更改代码后
EmailCampaignRecord::create([
'email_campaign_id' => $data['campaign_id'],
'mandrill_email_id' => $response[0]->_id,
'status' => $response[0]->status,
'to_email' => $contact['email_address']
]);
到
问题已解决问题在于
电子邮件活动id
为空,因为$data['campaign\u id']
为空正确的外键为$data['email\u campaign\u id']
这就是停止进程的原因-我应该在将其放入队列之前对其进行测试
更改代码后
EmailCampaignRecord::create([
'email_campaign_id' => $data['campaign_id'],
'mandrill_email_id' => $response[0]->_id,
'status' => $response[0]->status,
'to_email' => $contact['email_address']
]);
到
问题解决了