使用 Mailtrap 向 Laravel 7 中具有不同角色的用户发送电子邮件

Sending Email to Users with Different Roles in Laravel 7 using Mailtrap

我正在制作一个电子商务网站,我想在订单完成后向具有不同角色的用户发送电子邮件。我只能为特定角色执行此操作,但如何为不同角色执行此操作?由于普通用户可以是卖家,卖家也可以向其他卖家订购产品。到目前为止,这些是我尝试过的步骤:

OrderController.php

$users = User::whereHas('role', function ($q) {
        $q->where('name', 'user', 'seller');
    })->get();

    Mail::to($users)->send(new OrderCompleted($suborder));

但是,这仅适用于向 user 角色而非 seller 角色发送电子邮件。

这是我的邮件模型:

OrderCompleted.php

public $suborder;

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

我也试过Mail::to($suborder->user->email)->send(new OrderCompleted($suborder));,其中我的SubOrder.php model如下:

 public function user()
{
    return $this->belongsTo(User::class);
}

但是当我尝试使用第二个查询时,出现错误 Trying to get property 'email' of non-object

我该如何做到这一点?任何建议将不胜感激。谢谢!

通过你的这条线, “向用户角色而不是卖家角色发送电子邮件。”。我相信您想检查 'user' 和 'seller' 的名称。 所以改变你的查询,

$users = User::whereHas('role', function ($q) {
        $q->whereIn('name', ['user', 'seller']);
    })->get();

你的 $q->where 只是检查第二个参数,即本例中的用户。

关于你的第二个问题,我相信@sta 是正确的。

我能够使用

向目标用户发送电子邮件,无论他们的角色如何
Mail::to($suborder->order->user->email)->send(new OrderCompleted($suborder));

非常感谢!