2015-12-21 7 views
30

Ich versuche, mein Projekt L5.1 -> L5.2 zu aktualisieren. In upgrade guide gibt es eine Sache, die für mich nicht klar ist:Laravel 5.2 - pluck() Methode gibt Array zurück

Die lists Methode auf der Sammlung, Query Builder und Eloquent Abfrage Builder Objekte wurde pluck umbenannt. Die Methodensignatur bleibt gleich.

Das ist ok, umbenennen von lists() zu pluck() refactoting ist kein Problem. Aber was mit nützlicher pluck() Methode, die in L5.0 und L5.1 war?

Vom 5.0 documentation:

Abrufen einer einzelnen Spalte einer Reihe

$name = DB::table('users')->where('name', 'John')->pluck('name'); 

Was ist die Alternative für alte pluck() Methode in L5.2?

UPDATE:

Beispiel:

var_dump(DB::table('users')->where('id', 1)->pluck('id')); 

L5.1:

// int(1) 

L5.2:

// array(1) { [0]=> int(1) } 
+8

Ja, das ist ziemlich verwirrend. In 5.0 bedeutet "pluck()", dass 1 Feld aus einer Zeile ausgewählt wird. In 5.1 haben sie 'pluck()' entfernt und durch 'value()' ersetzt. Dann, in 5.2, ersetzen sie 'lists()', was die ganze Spalte mit 'pluck()' zurückgibt. Also, wenn Sie seit 4.2 sind, könnten Sie verwirrt werden:/ –

Antwort

46

Die aktuelle alte Für pluck() ist value().

+2

Vielen Dank! Dies sollte unbedingt in der Upgrade-Anleitung sein, da es die Änderung bricht. –

+2

Ich sehe, dass es in Upgrade-Leitfaden für 5.1 ist: http://laravel.com/docs/5.2/upgrade#upgrade-5.1.0 Meine schlechte ich habe nicht diese Änderung in früheren Version. –

+0

Es gibt tatsächlich eine Notiz über diese Änderung: "Die Eloquent Collection-Instanz gibt nun eine Basis-Collection (' Illuminate \ Support \ Collection') für die folgenden Methoden zurück: 'pluck', ..." –

-2

Verwenden Sie im ursprünglichen Beispiel die Methode select() in Ihrer Datenbankabfrage.

Dies ist schneller als die Verwendung eines PHP-Frameworks, da es die SQL-Abfrage für die Zeilenauswahl für Sie verwendet. Für gewöhnliche Sammlungen, glaube ich nicht, das gilt, aber da Sie eine Datenbank verwenden ...

Larvel 5.3: Specifying a Select Clause

+0

muss hinzugefügt werden -> get() ; Sie müssen immer noch PHP verwenden, um das Array zu formatieren –

+0

PHP-Operationen sind viel schneller als Mysql-Abfragen. –

+0

@AnkitBalyan bist du sarkastisch? MySQL ist viel schneller als PHP. Versuchen Sie, eine Million Zeilen in jedem ... –