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