2016-04-21 12 views
0

Gibt es eine Möglichkeit, ich kann eine Abfrage erstellen, die nicht nur vorhandene Entitäten auf dem Modell/Tabelle zurückgibt, sondern auch neue Variablen nach einer Funktion/Abfrage bevölkert erstellen. Alles in einer einzigen Abfrage.Anonyme Typen Alternative in Eloquent

So etwas wie dieser Pseudocode.

Job::whereDate('created_at', '>=', $pdate) 
    ->with('address') 
    ->with('Employees'->count() as newprop); 

Grundsätzlich möchte ich den Job, Adresse bekommen und auch eine neue Eigenschaft auf die zurückgegebenen Objekte in der Sammlung erstellen, die die Mitarbeiter Zahl für jeden Auftrag halten wird. Was ist der beste Weg, um dies zu tun? Vielleicht sollte ich einfach eine neue Funktion/Eigenschaft im Job-Modell erstellen, die die Anzahl der Mitarbeiter zurückgibt? Bedeutet das, dass die Anwendung mehr db-Abfragen erstellt oder wird diese Eigenschaft immer dann gefüllt, wenn ich wortgewandt verwende, um ein Job-Objekt zu erhalten?

Antwort

1

Wenn Sie es für alle Job Modellinstanzen hinzuzufügen:

public function getNewpropAttribute($value) { 
    return count($employees); 
} 

diese Weise können Sie Job::find($id)->newprop; nennen kann, und es wird diese Funktion ausführen. Es ist hier beschrieben https://laravel.com/docs/master/eloquent-mutators#accessors-and-mutators

+0

Das funktioniert, wenn ich explizit getNewpropAttribute Accessor mit Job :: find ($ ID) -> neue Stütze aufrufen; Was ist, wenn ich nur eine Sammlung von Jobs bekomme und sie mit json an das Front-End schieße? Wie in, wie kann ich es erhalten, ein employee_count -Attribut mit korrektem Zählwert zu erstellen, der für jedes Jobobjekt festgelegt wird. – LaserBeak