如何将关系数据传递给 Laravel 5.3 中的可邮寄件?

How can I pass relationship data to a mailable in 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 中调用它来传递财务 table 的数据,如下所示:

{{ $finance['name'] }}

然而,我不太明白的是如何抓取关系数据。

我正在使用类别 table 来处理类别。因此,如果我在 blade 视图中调用该类别:

{{ $finance['category_id'] }}

我只会获取类别 table 上字段的 ID 号。

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

在您的可邮寄 class 上定义的任何 public 属性 将自动提供给视图。所以,你可以这样做:

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