Nehmen wir an, ich habe 7 Spalten in der Tabelle und möchte nur zwei davon auswählen
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
Im eloquenten Laravel-Modell sieht es möglicherweise so aus
Table::where('id', 1)->get();
Aber ich denke, dieser Ausdruck wählt ALLE Spalten aus, wobei id gleich 1 ist, und ich möchte nur zwei Spalten (Name, Nachname). Wie wähle ich nur zwei Spalten aus?
Antworten:
Sie können es so machen:
quelle
SELECT name, surname FROM Table where id = 1
SQL-Abfragequelle
Mit der all () -Methode können wir bestimmte Spalten aus der Tabelle auswählen, wie unten gezeigt.
Hinweis : Laravel 5.4
quelle
Sie können auch
find()
wie folgt verwenden:Die
$id
Variable kann ein Array sein, falls Sie mehrere Instanzen des Modells abrufen müssen.quelle
Außerdem
Model::all(['id'])->toArray()
wird nur die ID als Array abgerufen.quelle
Sie müssen zuerst ein Modell erstellen, das diese Tabelle darstellt, und dann die folgende eloquente Methode verwenden, um die Daten von nur 2 Feldern abzurufen.
quelle
Sie können sowohl get () als auch all () verwenden.
quelle
Sie können auch Zupfen verwenden.
quelle
pluck()
weniger effizient ist als die anderen beschriebenen Methoden, da dieSELECT ...
Abfrage nicht geändert wird , sondern die bereits zurückgegebene Ergebnismenge verarbeitet wird.Wert einer Spalte abrufen:
Auch Sie können diese Methode mit der where-Klausel verwenden:
im Abfrage-Generator:
mit wo cluase:
oder
Das letzte Methodenergebnis ist ein Array
quelle
Sie können verwenden
Table::select ('name', 'surname')->where ('id', 1)->get ()
.Beachten Sie, dass Sie bei der Auswahl nur für bestimmte Felder eine weitere Abfrage durchführen müssen, wenn Sie später in der Anforderung auf diese anderen Felder zugreifen (dies kann offensichtlich sein und wollte nur diesen Vorbehalt einschließen). Das Einfügen des ID-Felds ist normalerweise eine gute Idee, damit Laravel weiß, wie alle Aktualisierungen, die Sie an der Modellinstanz vornehmen, zurückgeschrieben werden.
quelle
Ab Laravel 5.3 können Sie nur mit der
get()
Methode bestimmte Spalten Ihrer Tabelle abrufen :Oder ab Laravel 5.4 können Sie auch die
all()
Methode verwenden, um die Felder Ihrer Wahl abzurufen :mit beiden oben genannten Methoden
get()
oderall()
Sie können auch verwenden,where()
aber die Syntax ist für beide unterschiedlich:Model :: all ()
Model :: get ()
quelle
Um das Ergebnis einer bestimmten Spalte aus der Tabelle zu erhalten, müssen wir den Spaltennamen angeben.
Verwenden Sie folgenden Code: -
zum Beispiel -
quelle
Während der häufigste Ansatz die Verwendung ist
Model::select
, kann dies dazu führen, dass alle mit Accessor-Methoden definierten Attribute in Modellklassen gerendert werden. Wenn Sie also ein Attribut in Ihrem Modell definieren:Und dann benutze:
TableName::select('username')->where('id', 1)->get();
Die Sammlung wird mit beiden
first_name
undusername
nicht nur mit dem Benutzernamen ausgegeben .Besser verwenden
pluck()
, solo oder optional in Kombination mitselect
- wenn Sie bestimmte Spalten möchten.TableName::select('username')->where('id', 1)->pluck('username');
oder
TableName::where('id', 1)->pluck('username');
// das würde eine Sammlung zurückgeben, die nur aususername
Werten bestehtOptional können Sie auch
->toArray()
das Sammlungsobjekt in ein Array konvertieren.quelle
->get()
Ähnlich wie->all()
(und->first()
etc ..) können die Felder, die Sie zurückbringen möchten, als Parameter verwendet werden.->get/all(['column1','column2'])
Würde die Sammlung aber nur mit
column1
und zurückbringencolumn2
quelle
Sie können hier auch die
findOrFail()
Methode verwenden , die gut zu verwenden istquelle
Wenn Sie eine einzelne Zeile und aus dieser einzelnen Spalte eine Zeile
find()
abrufen möchten, verwenden Sie einen Zeilencode, um den Wert der bestimmten Spalte abzurufen , die Methode neben der Angabe der Spalte, die Sie abrufen möchten.Hier ist Beispielcode:
quelle
Sie können die folgende Abfrage verwenden:
quelle
benutze App \ Table; ... Tabelle :: where ('id', 1) -> get ('name', 'nachname');
wenn nein wo
Tabelle :: all ('Name', 'Nachname');
quelle