Laravel - 多个收件人的多个阵列(Mailable / Notifications)

时间:2017-12-01 17:13:18

标签: laravel email laravel-5 notifications

我正在寻找一个项目的建议和一个我自己陷入的有趣困境。

我的货件模型中有多个字段,它们是:

  • shipto_id
  • shipfrom_id
  • billto_id

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

public function billtoAccount()
{
    return $this->belongsTo('App\Customer', 'bill_to');
}

public function shiptoAccount()
{
    return $this->belongsTo('App\Customer', 'ship_to');
}

public function shipfromAccount()
{
    return $this->belongsTo('App\Customer', '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 @ example.com

1 个答案:

答案 0 :(得分:3)

阐述@Devon的评论: 这是业务逻辑。您可以在Shipment模型上有一个方法,该方法返回要作为数组通知的客户实例,例如getNotifiables() : array

然后在您的客户模型中,您可以使用Notifiable trait

use Illuminate\Notifications\Notifiable;

循环你的Notifiables,即客户

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