2015-12-21 20 views
30

Sto provando ad aggiornare il mio progetto L5.1 -> L5.2. In upgrade guide c'è una cosa che non è chiaro per me:Laravel 5.2 - il metodo pluck() restituisce l'array

Il metodo lists sulla collezione, generatore di query ed eloquente interrogazione oggetti builder è stato rinominato in pluck. La firma del metodo rimane la stessa.

che è ok, rinominare refactoting da lists() a pluck() non è un problema. Ma con l'utile metodo pluck() che era in L5.0 e L5.1?

Dal 5.0 documentation:

Recupero di una colonna Singola Da fila

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

Qual è l'alternativa per i vecchi pluck() metodo L5.2?

UPDATE:

Esempio:

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

L5.1:

// int(1) 

L5.2:

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

Sì, questo è piuttosto confusa. In 5.0, 'pluck()' significava selezionare 1 campo da una riga. Poi in 5.1, hanno rimosso 'pluck()' e lo hanno sostituito con 'value()'. Poi in 5.2 sostituiscono 'lists()', che restituisce l'intera colonna, con 'pluck()'. Quindi, se sei stato in giro dal 4.2, potresti sentirti confuso:/ –

risposta

46

La corrente alte per pluck() è value().

+2

Grazie! Questo dovrebbe assolutamente essere nella guida all'aggiornamento poiché sta cambiando il cambiamento. –

+2

Vedo che è nella guida di aggiornamento per 5.1: http://laravel.com/docs/5.2/upgrade#upgrade-5.1.0 Il mio male non ho capito questa modifica nella versione precedente. –

+0

In realtà c'è una notifica su questa modifica: "L'istanza di raccolta Eloquent ora restituisce una raccolta di base (' Illuminate \ Support \ Collection') per i seguenti metodi: 'pluck', ..." –

-2

Nell'esempio originale, perché non utilizzare il metodo select() nella query del database?

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

Questo sarà più veloce rispetto all'utilizzo di un framework PHP, che sarà per utilizzare la query SQL per fare la selezione delle righe per voi. Per le raccolte ordinarie, non credo questo vale, ma dal momento che si sta utilizzando un database ...

Larvel 5.3: Specifying a Select Clause

+0

necessario aggiungere -> get() ; è ancora necessario utilizzare PHP per formattare l'array. –

+0

Le operazioni PHP sono molto più veloci delle query Mysql. –

+0

@AnkitBalyan sei sarcastico? mysql è MOLTO più veloce di PHP. Prova a elaborare un milione di righe in ogni ... –

Problemi correlati