2017-09-25 3 views
0

ich immer die Ergebnisse einer Abfrage erstellt unter Verwendung von Eloquent (Laravel ORM)Wie übergibt man alle Eloquent (ORM) Ergebnisse über einen Laravel dataTransformer?

$query = Lawyer::whereHas('user', function($q) use ($request) { 
      $q->where('is_active', true); 
     }); 
$result = $query->get() 

Ich mag würde die Ergebnisse ich throught ein trasformer class LawyerTransformer extends TransformerAbstract{} bekommen passieren einige Daten zu den Ergebnissen hinzuzufügen.

Wenn ich das versuchen:

$this->collection($query->get(), new LawyerTransformer()) 

Ich habe folgendes Problem: Method [collection] does not exist.

Wie kann ich alle verwandeln die Ergebnisse unter Verwendung eines Transformators?

+0

Haben Sie versucht, was es in der Dokumentation https://laravel.com/docs/5.5/collections#method-transform sagt? Btw das Ergebnis von '' $ query-> get() '' 'ist bereits eine Sammlung am wahrscheinlichsten – Maantje

Antwort

1

Sie könnten die Transformationsmethode für die Sammlungsinstanz verwenden, um so etwas zu erreichen. Hier ist ein Beispiel, das alle Werte in einem Array um 1 erhöht;

$collection = collect([1, 2, 3]); 

$collection->transform(function ($item, $key) { 
    return (new IncrementTransformer)->transform($item); 
}); 

Und die transfomer Klasse

class IncrementTransformer 
{ 
    public function transform($item) 
    { 
     return $item += 1; 
    } 
} 

Sie könnten wahrscheinlich dieses ein wenig sauberer schreiben, aber Sie die grundlegende Idee.

+0

Danke, das ist die Antwort, auf die ich gewartet habe. Ich habe das Sammlungsobjekt und die Verwendung des Transformer-Objekts nicht verstanden. Jetzt hab ich es verstanden. Vielen Dank ! – Gauthier

Verwandte Themen