2

我发现 laravel 'pluck' 返回一个普通数组,而 'select' 返回一个对象。任何人都可以向我解释这两者之间有什么不同吗?

谢谢你。

4

4 回答 4

4

Pluck 是一种 Laravel 集合方法,用于从集合中提取某些值。您可能经常想从集合中提取某些数据,即 Eloquent 集合。

而 Select 是多列或特定列的正常选择。他们是

通过使用Pluck,您只要求返回必要的字段,但get您将拉出所有列。select 也一样,这里的区别在于返回的结果。使用 pluck 导致将最终结果作为具有一对给定参数的数组返回,但 select 返回一个数组(或对象),其中每个子项都包含一行。

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

于 2022-03-04T14:25:17.180 回答
2

实际上 select 是在数据库查询中使用的,它可以通过限制拉取的列来影响性能。但是,Pluck 是 Laravel Collection 的方法,所以你可以在从 DB 中提取数据后使用 pluck。

于 2022-03-04T14:45:21.370 回答
0

Pluck 函数通常用于从集合中提取单列或将 2 列作为键、值对,它始终是一维数组。

Select 将返回您为二维数组中的实体指定的所有列,例如数组中选定值的数组。

注意: Pluck 函数是在获取数据后发生的收集函数。Select 是一个查询构建器函数,它构建查询以在数据库服务器中执行。

于 2022-03-04T14:52:47.283 回答
0

虽然我认为其他答案很好,但这是我的看法,希望它在未来让你绝对清楚!

选择

前任 :DB::table('users')->select('id', 'name', 'email)

Select是一个发送到数据库的方法,Laravel 将翻译为 SELECT id, name, email FROM users

这将选择您询问的列的数据,仅此而已。它允许您通过仅询问所需数据来更有效地处理您的请求。以上面的示例为例,该用户是 Facebook 用户。它有大量数据,以及与其他表的关系。如果您只想显示姓名、电子邮件和指向用户个人资料的链接,请执行此请求!

有关更多信息并了解有关预期响应的更多信息,请访问:https ://laravel.com/docs/9.x/queries#select-statements

采摘

前任:

$users = DB::table('users')->where('roles', '=', 'admin')
$emails = $users->pluck('email')

Pluck方法检索您已经从数据库中获得的集合中的值,现在是Laravel集合。这允许您创建一个提取数据的数组,但不会提高您的请求的性能,如上面的示例中,$users将保存所有管理员用户的所有数据。

既然不能提高性能,那有什么好处呢? 例如,根据位置将不同变量中的一些数据分开,采摘将很有用。您可能需要某些内容的用户数据,但还希望一起显示所有电子邮件的快速列表。

有关 pluck 方法的更多信息并了解如何从第二列创建键控数组,请访问此处的文档:https ://laravel.com/docs/9.x/collections#method-pluck

戴夫

于 2022-03-04T18:38:08.793 回答