2017-02-01 2 views
0

Ich habe ein Modell mit der Bezeichnung Quote, das eine $this->belongsTo(User::class) Beziehung hat.Benachrichtigung an Benutzer im Zusammenhang mit der Objektsammlung senden

Was ich versuche todo ist, bestimmte Angebote (wo Status = 3) abzufragen und dann die Benachrichtigung an die Benutzer dieser Angebote zu senden.

Beispiel.

$quotes = Quote::where('status', 3)->get(); 

Notification::send($quotes, new RequestClientReviewNotify($quotes)); 

Aber die oben wird nicht funktionieren, da es ein email Feld auf quotes Tabelle finden versuchen.

Jede Hilfe wäre großartig!

Antwort

1

hinzufügen email dem Array Appends im Zitat Modell: protected $appends = ['email']

Dann diese Funktion auf das Zitat Modell hinzufügen:

public function getEmailAttribute() 
{ 
    return $this->user->email; 
} 

Nun ist die Zitatsammlung der Benutzer E-Mail enthalten soll. Ich habe es nicht getestet, aber ich sollte arbeiten.

Oder Sie können die Benutzertabelle beitreten:

Quote::select('quotetablename.*', 'users.email') 
    ->where('quotetablename.status', 3) 
    ->join('users', 'quotetablename.user_id', '=', 'users.id') 
    ->get(); 
+0

Interessante Lösung - ich frage mich, ob es der Benutzer Beziehung immer eifrig Last würde, wenn nur Quote Sammlung zugreifen. – Andrew

+0

@Andrew Alles im anhängigen Array wird geladen –

+0

Das könnte nicht das Beste sein, da ich manchmal nur die Angebote abfragen und keine zusätzliche Abfrage für die Benutzerbeziehung haben möchte. – Andrew

Verwandte Themen