it-swarm.com.de

so wählen Sie bestimmte Spalten in der Sprache der Laravel aus

nehmen wir an, ich habe 7 Spalten in der Tabelle, und ich möchte nur zwei davon auswählen, so etwas

SELECT `name`,`surname` FROM `table` WHERE `id` = '1';

Im Laravel-eloquenten Modell kann es so aussehen

Table::where('id', 1)->get();

aber ich denke, dieser Ausdruck wird ALLE Spalten auswählen, bei denen id gleich 1 ist, und ich möchte nur zwei Spalten (Name, Nachname). Wie kann ich nur zwei Spalten auswählen?

57
devnull Ψ

Sie können es so machen:

Table::select('name','surname')->where('id', 1)->get();
120
Table::where('id', 1)->get(['name','surname']);
34
Utkarsh Pandey

Mit der Methode all () können wir bestimmte Spalten aus der Tabelle auswählen (siehe unten).

ModelName::all('column1', 'column2', 'column3');

Hinweis : Laravel 5.4

21

Auch Model::all(['id'])->toArray() ruft die ID nur als Array ab. 

10
user3888958

Sie müssen zuerst ein Modell erstellen, das diese Tabelle darstellt, und dann die unten beschriebene Methode verwenden, um die Daten von nur zwei Feldern abzurufen.

Model::where('id', 1)
         ->pluck('name', 'surname')
         ->all();
8
Mahesh Yadav

Sie können find() auch so verwenden:

ModelName::find($id, ['name', 'surname']);

Die Variable $id kann ein Array sein, falls Sie mehrere Instanzen des Modells abrufen müssen.

7
Sammie

Sie können sowohl get () als auch all () verwenden.

ModelName::where('a', 1)->get(['column1','column2']);
4
aleXela

Verwenden Sie folgenden Code: - 

   $result = DB::Table('table_name')->select('column1','column2')->where('id',1)->get();   
3
Jitender Sharma

Während der häufigste Ansatz die Verwendung von Model::select ist, kann dies dazu führen, dass alle mit Accessormethoden in Modellklassen definierten Attribute ausgegeben werden. Wenn Sie also ein Attribut in Ihrem Modell definieren:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the user's first name.
     *
     * @param  string  $value
     * @return string
     */
    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }
}

Und dann benutze: TableName::select('username')->where('id', 1)->get();

Es wird eine Sammlung mit first_name und username anstatt nur mit dem Benutzernamen ausgegeben.

Verwenden Sie pluck(), solo oder optional in Kombination mit select - wenn Sie bestimmte Spalten wünschen.

TableName::select('username')->where('id', 1)->pluck('username');

oder

TableName::where('id', 1)->pluck('username'); // Das würde eine Sammlung zurückgeben, die nur aus username-Werten besteht

Verwenden Sie optional auch ->toArray(), um das Auflistungsobjekt in ein Array zu konvertieren.

2
niklaz

Sie können Table::select ('name', 'surname')->where ('id', 1)->get () verwenden.

Beachten Sie, dass Sie bei der Auswahl nur für bestimmte Felder eine weitere Abfrage durchführen müssen, wenn Sie später auf die anderen Felder in der Anforderung zugreifen (dies kann offensichtlich sein, wenn Sie nur diese Einschränkung berücksichtigen möchten). Das Einschließen des ID-Felds ist normalerweise eine gute Idee, sodass Laravel alle Aktualisierungen, die Sie an der Modellinstanz vornehmen, zurückschreiben kann.

2
Josh Rumbut

Sie können auch Zupfen verwenden.

Model::where('id',1)->pluck('column1', 'column2');
1

Ab laravel 5.3 können Sie nur mit der get() -Methode bestimmte Spalten Ihrer Tabelle abrufen:

YouModelName::get(['id', 'name']);

Oder ab laravel 5.4 können Sie auch die Methode all() verwenden, um die Felder Ihrer Wahl abzurufen:

YourModelName::all('id', 'name');

mit den beiden oben genannten Methoden get() oder all() können Sie auch where() verwenden, aber die Syntax ist für beide unterschiedlich:

Model :: all ()

YourModelName::all('id', 'name')->where('id',1);

Model :: get ()

YourModelName::where('id',1)->get(['id', 'name']);
1
Haritsinh Gohil

->get() kann ähnlich wie ->all() (und ->first() etc ..) die Felder übernehmen, die Sie als Parameter zurückholen möchten;

->get/all(['column1','column2'])

Würde die Sammlung aber nur mit column1 Und column2 Zurückbringen

0
Robert Pounder

Sie können die folgende Abfrage verwenden:

Table('table')->select('name','surname')->where('id',1)->get();
0
Luis

sie können auch die findOrFail() -Methode hier verwenden es ist gut

wenn die Ausnahme nicht abgefangen wird, wird automatisch eine 404-HTTP-Antwort an den Benutzer zurückgesendet. Es ist nicht erforderlich, explizite Überprüfungen zu schreiben, um 404 Antworten zurückzugeben, wenn diese Methode keinen Fehler 500 ergibt.

ModelName::findOrFail($id, ['firstName', 'lastName']);
0
Jignesh Joisar

Wenn Sie eine einzelne Zeile und aus dieser Zeile eine einzelne Spalte abrufen möchten, verwenden Sie neben der Angabe der abzurufenden Spalte die find() -Methode, um den Wert der jeweiligen Spalte abzurufen.

Hier ist Beispielcode:

ModelName::find($id_of_the_record, ['column_name'])->toArray()['column_name'];
0
Brane

Wert einer Spalte abrufen:

Table_Name::find($id)->column_name;

Sie können diese Methode auch mit der where-Klausel verwenden:

Table_Name::where('id',$id)->first()->column_name;
0
Mostafa Asadi