0

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

订单控制器.php

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

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

但是,这仅适用并将电子邮件发送到user角色而不是seller角色。

这是我的邮件模型:

订单完成.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

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

4

2 回答 2

1

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

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

您的 $q->where 仅用于第二个参数,即案例中的用户。

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

于 2020-10-24T15:12:13.820 回答
1

我能够发送电子邮件到目标用户的电子邮件,无论他们使用什么角色

Mail::to($suborder->order->user->email)->send(new OrderCompleted($suborder));

太感谢了!

于 2020-10-26T18:47:14.243 回答