2017-10-19 1 views
0

Ich bin durch eine Sammlung durchschleifen und auf ein Attribut im Modell für den Benutzer der Sammlungsgegenstand zugreifen.Laravel - Holen Sie sich aktuelle Modellattribut in einer Sammlung jeder

Die currentQueueLength-Methode führt einige Abfragen aus, um die Länge der Gesamtbuchungen zu ermitteln, die eine Anforderung erfüllen.

Das Problem ist, dass das Attribut currentQueueLength immer den gleichen Wert für jedes Element in der Auflistung zurückgibt.

Gibt es eine Möglichkeit, dass ich das Attribut in jeder Iteration der Sammlung neu aufgerufen werden kann -> jede Methode? Es scheint nur den Wert zu verwenden, wenn die $ advancedBookings-Sammlung gesammelt wird.

+0

Per [Laravel Accessoren & Mutatoren] (https://laravel.com/docs/5.5/eloquent-mutators#accessors -und-mutators), sollte "currentQueueLength" nicht "current_queue_length" sein? – ljubadr

Antwort

0

ich in ein ähnliches Problem gerade gestern lief, anstatt in die Refresh-Methode unter Verwendung von

$booking->staffMember->user->currentQueueLength; 

versuchen Sie es mit

$booking->staffMember()->first()->user()->first()->currentQueueLength; 

Versuchen Sie auch suchen: https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Model.html#method_refresh Ich habe versucht, nicht persönlich, weil die erste Lösung löste mein Problem

+1

'-> get()' gibt eine 'Collection' zurück, also' -> get() -> user() 'würde nicht versuchen, auf die Funktion' User' in einer 'Collection' zuzugreifen, die nicht existiert .. –

+0

mein schlechtes, sollte zuerst verwendet haben, bearbeite die Antwort mit der Korrektur –

+1

Was gut ist, aber '-> staffMember' (ohne die Klammer) würde '-> first()' oder '-> get() zurückgeben 'abhängig davon, ob die Beziehung als '-> mit()' -Klausel enthalten ist, und basiert auf 'hasOne',' gehörtTo', etc etc .; Sie fügen also immer noch mehr Schritte hinzu, als Sie benötigen. Die oberste Syntax ist korrekt (vorausgesetzt, die Beziehungen sind korrekt definiert) und weniger speicherintensiv, da keine zusätzlichen Abfragen ausgeführt werden. –

Verwandte Themen