2017-07-03 1 views
0

Ich benutze Laravel 5.3. In meinem Benachrichtigungsmodell muss ich alle ungelesenen Benachrichtigungen erhalten und sie dann als gelesen aktualisieren.Laravel 5.3 Alle Datensätze erhalten und dann aktualisiert

richtig habe ich mit foreach zu tun, nachdem Model::where()->get();

Mai mit map(); vor get();

Wie mein denke, es sollte möglich mit

$notifications->map(function($noti){ 
    $noti->is_read= 1; 
    $noti->update(); 
}); 

Aber es funktioniert nicht zur Verfügung stehen.

+0

ich hier nicht mit einer foreach gehen würde. Jede Schleife führt zu einer Datenbankabfrage. Sie sollten sie alle gleichzeitig mit einer bestimmten Abfrage aktualisieren. –

Antwort

0

Sie sollten alle auf einmal aktualisieren. Mit dem gleichen where-Klausel wie in Ihrem wählt

Model::where(...)->update(['read' => true]); 

oder was auch immer Ihr Leseindikator ist

+0

Danke für Ihre Wiederholung, Bt ich benötigt, dass die Datensätze. Mit diesem muss ich alle wieder aufnehmen. –

+0

Wie mein denke, es sollte möglich mit $ notifications-> Karte (function ($ Noti) { noti- $> is_read = 1; $ noti-> update(); }); Aber es funktioniert nicht. –

+0

läuft immer noch besser mit zwei Anfragen. Eine zum Lesen und eine zum Aktualisieren. Sie sollten keine Schleife ausführen, wenn Sie mehr als 3 Benachrichtigungen erwarten. –

Verwandte Themen