如何将关系数据传递给Laravel 5.3中的mailable?

时间:2016-12-26 01:30:04

标签: php laravel laravel-5.3

使用背包为laravel(喜欢它)。

所以,每次用户存储数据时都会有这段代码( FinanceCrudController ):

    $finance = $request->all();
    if ($request->input('shouldPay') == 'Yes') {
        Mail::to($request->user())->send(new NewBill($finance));
        return parent::storeCrud();
    } 
    else {
        return parent::storeCrud();
    }

这就是我的Mailable( NewBill )的样子:

class NewBill extends Mailable
{
    use Queueable, SerializesModels;


    /**
     * The finance instance.
     *
     * @var Finance
     */
    public $finance;


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

    /**
     * Build the message.
    *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.newbill');
    }
}

然后我可以通过在 newbill.blade.php 中调用它来传递财务表中的数据,如下所示:

{{ $finance['name'] }}

然而,我无法弄明白的是如何获取关系数据。

我使用Category表来处理类别。所以,如果我在我的刀片视图上调用该类别:

{{ $finance['category_id'] }}

我只会在分类表中获取该字段的ID号。

如何在电子邮件中生成实际的类别名称而不是字段的ID?

1 个答案:

答案 0 :(得分:2)

您的mailable类中定义的所有公共属性都将自动提供给视图。所以,你可以这样做:

public $finance;
public $category;

public function __construct($finance)
{
    $this->finance = $finance;
}

public function build()
{
    $this->category = \App\Category::where('id', $this->finance['category_id'])->first();
    return $this->view('emails.newbill');
}

然后在视图中使用$category->name访问类别名称。

https://laravel.com/docs/5.3/mail#view-data