Laravel-多个收件人的多个阵列(可邮寄/通知)



我正在寻找针对一个项目的建议,而我将自己放入的有趣困境。

我的装运模型中有多个字段,它们是:

  • shipto_id
  • Shipfrom_id
  • billto_id

他们都将(通过不同的关系)链接到我的客户模型:

public function billtoAccount()
{
    return $this->belongsTo('AppCustomer', 'bill_to');
}
public function shiptoAccount()
{
    return $this->belongsTo('AppCustomer', 'ship_to');
}
public function shipfromAccount()
{
    return $this->belongsTo('AppCustomer', 'ship_from');
}

和这些客户(实际上可能会更好地描述为客户帐户(这些不是用户帐户,它们更像是为每家公司完成的个人资料)可以具有与许多用户相关的用户他们。

 public function users()
{
    return $this->belongsToMany(User::class);
}

现在,虽然我知道如何发送邮件和通知,但我很想知道我将如何将其发送到多个用户的电子邮件中。因此,让我描述以下内容:创建了一些东西,并引用了以下客户(以及他们的用户)。

  • (billto_id) - 客户帐户1-用户1(email1@example.com)
  • (shipto_id) - 客户帐户2-用户2(email2@example.com)&用户3(email3@example.com)
  • (shipfrom_id) - 客户帐户37-用户6(email4@example.com)

现在,我将如何将用户的电子邮件移到一系列电子邮件中以发送通知或可发送给他们的通知?

因此应该弹出:email1@example.com,email2@example.com,email3@example.com,email4@examples.com

在@devon的评论上详细说明:这是业务逻辑。您可以在货运模型上使用一种方法,该方法将客户实例返回被通知为数组,例如getNotifiables() : array

然后在您的客户模型中,您可以使用通知性状

use IlluminateNotificationsNotifiable;

并循环浏览您的通知,即客户

$notification = new ShipmentWasCreated()
foreach ($shipment->getNotifiables() as $notifiable) {
    $notifiable->notify($notification);
}

更好的替代方案:

Notification::send($shipment->getNotifiables(), new ShipmentWasCreated());

最新更新