Laravel 5.2 - pluck()方法返回数组

Lim*_*nte 56 php query-builder laravel eloquent laravel-5.2

我正在尝试升级我的项目L5.1 - > L5.2.在升级指南中有一件事我不清楚:

" lists集合","查询"构建器和"Eloquent查询"构建器对象上的方法已重命名为pluck.方法签名保持不变.

没关系,重新命名refactoting lists()pluck()是没有问题.但是pluck()L5.0和L5.1中有用的方法是什么?

5.0文档:

从一行中检索单个列

$name = DB::table('users')->where('name', 'John')->pluck('name');
Run Code Online (Sandbox Code Playgroud)

pluck()L5.2中旧方法的替代方法是什么?

更新:

例:

var_dump(DB::table('users')->where('id', 1)->pluck('id'));
Run Code Online (Sandbox Code Playgroud)

L5.1:

// int(1)
Run Code Online (Sandbox Code Playgroud)

15.2:

// array(1) { [0]=> int(1) }
Run Code Online (Sandbox Code Playgroud)

use*_*496 85

目前的替代方案pluck()value().

  • 谢谢!这绝对应该在升级指南中,因为它正在发生变化. (2认同)
  • 我看到它在5.1的升级指南中:http://laravel.com/docs/5.2/upgrade#upgrade-5.1.0我的不好我没有在prev版本中发现这个变化. (2认同)

res*_*hma 12

在 Laravel 5.1+ 中,您可以使用 value() 代替 pluck。

要获得第一次出现,您可以使用

DB::table('users')->value('name');
Run Code Online (Sandbox Code Playgroud)

或使用,

DB::table('users')->where('id', 1)->pluck('name')->first();
Run Code Online (Sandbox Code Playgroud)


NuO*_*One 8

laravel pluck返回一个数组

如果您的查询是:

 $name = DB::table('users')->where('name', 'John')->pluck('name');
Run Code Online (Sandbox Code Playgroud)

那么数组就是这样(键是项目的索引。自动递增的值):

[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]
Run Code Online (Sandbox Code Playgroud)

但是,如果您这样做:

$name = DB::table('users')->where('name', 'John')->pluck('name','id');
Run Code Online (Sandbox Code Playgroud)

那么关键是数据库中的实际索引。

key||value
[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]
Run Code Online (Sandbox Code Playgroud)

您可以将任何值设置为键。


Fur*_*oud 8

我使用 laravel 7.x 并将其用作解决方法:->get()->pluck('id')->toArray();

它返回一个 id 数组,[50,2,3]这是我使用的整个查询:

   $article_tags = DB::table('tags')
    ->join('taggables', function ($join) use ($id) {
        $join->on('tags.id', '=', 'taggables.tag_id');
        $join->where([
            ['taggable_id', '=', $id],
            ['taggable_type','=','article']
        ]);
    })->select('tags.id')->get()->pluck('id')->toArray();
Run Code Online (Sandbox Code Playgroud)