将数据传递给Laravel事件

时间:2016-02-17 17:41:47

标签: php laravel laravel-5 lumen

我刚刚开始阅读laravel中的public class UserRepository : IUserRepository { SourceofTruthEntities context = null; ePrescribeEntities epcs = null; public UserRepository() { context = new SourceofTruthEntities(); } public List<FullMaster> SelectByNPI(string id) { var data = context.FullMasters.Where(x => x.NPI == id).ToList(); return data; } public List<FullMaster> SelectByName(string first, string last) { var data = context.FullMasters.Where(x => x.FirstName == first && x.LastName == last).ToList(); return data; } public void SavePrescriber(string id) { var data = context.FullMasters.Where(x => x.NPI == id).FirstOrDefault(); Prescriber p = new Prescriber { First = data.FirstName, Last = data.LastName, DEA = data.DEA, License = data.LIC, Life = data.Life_Hosp, NPI = data.NPI }; epcs.EPCS_Prescriber.Add(p); epcs.SaveChanges(); } } ,现在已经被困了几个小时。这可能很容易,但我遗漏了一些东西。

我像这样点击事件

events

正如您所看到的,我正在将// get the referrer $referrer = Customer::where('promocode', $user->referral_code)->first(); // fire referral sign up event Event::fire(new ReferralSignupEvent($referrer)); 对象传递给该事件。

我创建了这个活动;

eloquent

我创建了监听器

<?php

namespace App\Events;

use App\Models\Customer;

class ReferralSignupEvent extends Event
{

    public $referrer;


    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Customer $referrer)
    {
        //
        $this->referrer = $referrer;
    }
}

这就是我被困住的地方,我如何访问我传递给事件的<?php namespace App\Listeners; use App\Events\ReferralSignupEvent; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class EmailReferralSignupConfirmation { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param ReferralSignupEvent $event * @return void */ public function handle(ReferralSignupEvent $event) { // $referrer = $event->referrer; $mailer = app()->make('mailer'); $mailer->queue('emails.restaurant-welcome', ['referrer' => $referrer] , function ($message) use ($referrer) { $message->from('support@xxxx.com', 'xxx Restaurant Team'); $message->subject('Welcome to xxx'); $message->to($referrer->email)->bcc('support@xxx.com'); }); } } 并访问它的属性,如customer等 我还需要将其传递给我的电子邮件模板以访问这些属性以个性化电子邮件。

我在这一行email, first_name

上收到错误

$referrer->email

任何帮助表示赞赏

这是我从field email not found in class

获得的
dd($referrer)

我只是希望能够访问这些属性。

1 个答案:

答案 0 :(得分:1)

这不是代码错误。你的代码应该工作正常。这只是IDE的一个问题。由于字段属性在Eloquent模型上的工作方式,您的IDE不知道email字段确实存在,因此它将其报告为缺失。

barryvdh/laravel-ide-helper包可能有助于解决此问题。

除了上述软件包之外,为public $referrer;属性提供正确的PHPDoc也可能有所帮助。

class ReferralSignupEvent extends Event
{
    /**
     * The customer referrer.
     *
     * @var \App\Models\Customer
     */
    public $referrer;

    // ...
}