2015-12-21 53 views
30

我試圖升級我的項目L5.1 - > L5.2。在upgrade guide有一件事是不明確對我說:Laravel 5.2 - pluck()方法返回數組

的收集,查詢生成器和雄辯的查詢 建設者對象lists方法已重命名爲pluck。方法簽名 保持不變。

沒關係,重新命名lists() refactoting到pluck()是沒有問題的。但是在L5.0和L5.1中有用的方法pluck()

5.0 documentation

檢索單個列從行

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

哪些是15.2歲pluck()方法替代?

UPDATE:

實施例:

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

L5.1:

// int(1) 

15.2:

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

啊,這是非常令人迷惑。在5.0中,'pluck()'意味着從一行中選擇1個字段。然後在5.1中,他們刪除了'pluck()'並用'value()'代替它。然後在5.2中,它們用'pluck()'替換'list()',它返回整列。所以如果你從4.2開始就已經在使用了,你可能會感到困惑:/ –

回答

46

當前阿特pluck()的標準是value()

+2

謝謝!這絕對應該在升級指南中,因爲它正在改變。 –

+2

我看到它在5.1的升級指南中:http://laravel.com/docs/5.2/upgrade#upgrade-5.1.0我的錯我沒有在prev版本中發現這個變化。 –

+0

實際上這個改變的通知是:「Eloquent集合實例現在返回一個基本集合('Illuminate \ Support \ Collection'),用於以下方法:'pluck',...」 –

-2

在原始示例中,爲什麼不在數據庫查詢中使用select()方法?

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

這將比使用PHP框架更快,因爲它會利用SQL查詢爲您進行行選擇。對於普通收藏品,我不相信這也適用,但因爲你正在使用的數據庫...

Larvel 5.3:Specifying a Select Clause

+0

需要添加 - > get() ;您仍然需要使用PHP來格式化數組 –

+0

Php操作比Mysql查詢快得多。 –

+0

@AnkitBalyan你是諷刺嗎? MySQL比PHP快得多。嘗試處理每一百萬行...... –