2015-12-21 164 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快得多。尝试处理每一百万行...... –