2017-12-01 4 views
0

여러받는 사람 (메일을 보낼 수/공지 사항)에 대한 다중 배열Laravel -. 내가 프로젝트 내가 자신을 넣었습니다 흥미로운 곤경에 대한 조언을 찾고 있어요

나는 그들이 내 선적 모델에서 여러 필드입니다했다 :

  • billto_id

그들은 모두 린을 shipfrom_id shipto_id K 내 고객 모델 (다른 관계를 통해) : 가능성이 더 나은 고객 계정으로 기술 될 것이다 현실에서

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); 
} 

, 내가 mailables 및 알림을 보내는 방법을 알고하면서, 나는 여러 사용자의 이메일에 사람들을 보내 가겠어요 방법을 알고 궁금했다. 그래서 다음을 설명하겠습니다. 뭔가가 만들어지고 다음 고객 (그리고 차례로 사용자)이 참조됩니다.

, 나는 이메일의 배열을 통해 사용자의 이메일을 이동 가겠어요 어떻게해야합니다 그들에게 통보 또는 발송물이 발송 되었습니까? 이 튀어한다 그래서

는 : [email protected], [email protected], [email protected], [email protected] @Devon의 의견에 부연

+0

수있는 세 가지 관계를 통해하지 방금 루프 관련 모델로부터 이메일을 받으시겠습니까? 이것이이 논리를 수행하는 방법뿐만 아니라 웅변적인 관계가되어야한다는 사고 방식에서 벗어나고 싶을 수도 있습니다. – Devon

답변

1

: 이 비즈니스 로직입니다 . 고객 인스턴스를 배열로 알리도록 반환하는 Shipment 모델의 메소드를 사용할 수 있습니다 (예 :

getNotifiables() : array은 그런 다음 고객 모델에서 당신이 신고해야할 특성

use Illuminate\Notifications\Notifiable;

그리고 당신의 Notifiables을 통해 반복, 즉 고객을 사용할 수 있습니다

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