Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach循环不使用laravel队列_Php_Laravel 4 - Fatal编程技术网

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']
    ]);

问题解决了