php – Laravel 5.1 Eloquent Events

我正在使用Laravel Model Events.我的要求是将其他参数传递给事件.

我这样想:

$feedback = new Feedback();
    $feedback->user_id = $this->user_id;
    $feedback->feedback = $request->feedback;
    $data = array(
        'message' => $request->feedback,
        'from' => $this->data->user->email,
        'name' => $this->data->user->displayname
    );
    $feedback->save($data);

我的活动是:

public function boot()
{
    Feedback::saved(function ($item) {
        //\Event::fire(new SendEmail($item));
    });
}

但它只在我尝试发送时发送Model对象:

$data = array(
        'message' => $request->feedback,
        'from' => $this->data->user->email,
        'name' => $this->data->user->displayname
    );

我如何将此发送给活动?

最佳答案 肯定有解决这个问题的方法.首先想到的是在您的活动所在的提供商内部获取Auth数据.

你需要做这样的事情:

use Auth; //Assuming this is how you are handling authentication

public function boot()
{
    Feedback::saved(function ($item) {
        $user = Auth::user();
        $data = [ 
            'message' => $item->feedback, 
            'from' => $user->email, 
            'name' => $user->displayname
        ];
        \Event::fire(new SendEmail($data));
    });
}

您可以改为使用$item-> user->电子邮件,而不用担心使用Auth,我只是无法了解您到目前为止发布的内容之间的关系.

代码可能需要稍微调整才能在您的应用程序中工作,让我知道是否还有其他问题!

点赞