2016-12-14 20 views
1

Ich entwickle eine Webapp mit Laravel 5.2, aber es gibt ein Problem, das ich nicht lösen kann.Laravel Eloquent Sammlung Attribute

Ich habe ein Modell, das Eloquent Modell erweitert, aber wenn ich versuche, meine Datenbanktabelle zur Ausgabe mit „wo“, zum Beispiel

\App\MyModel::where('id_table', 23)->first(); 

Es hat eine Sammlung mit vielen Informationen nicht nützlich für mich in diesem Moment zurückkehren wie 'bewacht', 'Schlüsseltyp' ... und die Daten meiner Tabelle sind unter 'Attribute'. Im Anschluss an Laravels Guide sehe ich, dass jeder einfach wo wie ich benutzt und dann mit $mytable->myvalue ausgegeben wird, aber das kann natürlich nicht für mich funktionieren.

Hier ein Screenshot mit der Sammlung ich spreche:

enter image description here

Wie kann ich immer Attribute nur, wenn ich so etwas wie "::where()" verwenden?

Ich habe versucht getAttributes(), aber es gibt mir einen 500 Fehler.

Antwort

3

Wenn Sie nur ein paar Attribute bekommen wollen, machen Sie viele Dinge. Wahrscheinlich erste Art und Weise wird das Beste für Sie:

Verwendung pluck():

\App\MyModel::where('id_table', 23)->pluck('id', 'name'); 

Verwendung select():

\App\MyModel::select('id', 'name')->where('id_table', 23)->get(); 

Verwendung get() mit Parametern:

\App\MyModel::where('id_table', 23)->get(['id', 'name']); 

Wenn Sie möchten, Erhalte wortgewandte Sammlung und baue erst dann ein Array mit nur Attribute, können Sie toArray() verwenden:

\App\MyModel::where('id_table', 23)->get()->toArray(); 

Wenn Sie einige Attribute einer neuen Sammlung zu erhalten, verwenden Sie pluck() auf Sammlung:

$collection = \App\MyModel::where('id_table', 23)->get(); 
$names = $collection->pluck('name'); 
+0

Vielen Dank für Ihre Antwort! Ihre Methode mit toArray() ist mehr oder weniger das, wonach ich gesucht habe, aber ich habe auch select und get versucht und sie geben immer eine Sammlung mit 'table', 'primaryKey', 'connection', 'keyType', 'perPage' zurück '(Ich habe in meiner Frage ein Bild hinzugefügt). Wie kann ich nur Attribute erhalten, zum Beispiel mit der Methode get()? –

+1

Ich dachte, du brauchst nur ein paar Attribute. In Ihrem Fall wird 'get()' Ihnen nicht helfen, verwenden Sie '-> get() -> toArray()', um alle Attribute ohne zusätzliche Objekteigenschaften zu erhalten. –

+1

Ja, danke .. Ich denke du hast Recht –