2015-12-21 1 views
30

J'essaye de mettre à jour mon projet L5.1 -> L5.2. En upgrade guide il y a une chose qui est pas clair pour moi:Laravel 5.2 - méthode pluck() renvoie le tableau

La méthode lists sur la collecte, le constructeur de la requête et requête Eloquent objets constructeur a été renommé pluck. La signature de méthode reste la même.

C'est ok, renomme refactoting de lists() à pluck() est pas un problème. Mais quoi avec la méthode utile pluck() qui était dans L5.0 et L5.1?

De l'5.0 documentation:

Récupérer une colonne d'une ligne

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

Quelle est l'alternative pour ancienne méthode pluck() dans L5.2?

UPDATE:

Exemple:

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

L5.1:

// int(1) 

L5.2:

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

Oui, cela est assez déroutant. Dans 5.0, 'pluck()' signifiait sélectionner 1 champ d'une ligne. Puis en 5.1, ils ont enlevé 'pluck()' et l'ont remplacé par 'value()'. Puis en 5.2, ils remplacent 'lists()', qui retourne toute la colonne, avec 'pluck()'. Donc, si vous avez été autour de 4,2, vous pourriez être confus:/ –

Répondre

46

Le courant alte rnatif pour pluck() est value().

+2

Merci! Cela devrait absolument être dans le guide de mise à niveau car il est briser le changement. –

+2

Je vois que c'est dans le guide de mise à niveau pour 5.1: http://laravel.com/docs/5.2/upgrade#upgrade-5.1.0 Mon mauvais je n'ai pas attrapé ce changement dans la version de prev. –

+0

Remarque: "L'instance de collection Eloquent renvoie maintenant une collection de base (' Illuminate \ Support \ Collection') pour les méthodes suivantes: 'pluck', ..." –

-2

Dans l'exemple original, pourquoi ne pas utiliser la méthode select() dans votre requête de base de données? Ce sera plus rapide que l'utilisation d'un framework PHP, car il utilisera la requête SQL pour faire la sélection de ligne pour vous. Pour les collections ordinaires, je ne crois pas que cela vaut, mais puisque vous utilisez une base de données ...

Larvel 5.3: Specifying a Select Clause

+0

besoin d'ajouter -> get() ; vous devez toujours utiliser PHP pour formater le tableau. –

+0

Les opérations PHP sont beaucoup plus rapides que les requêtes Mysql. –

+0

@AnkitBalyan es-tu sarcastique? mysql est BEAUCOUP plus rapide que php. Essayez de traiter un million de lignes dans chaque ... –