簡體   English   中英

Laravel 5.2 - pluck() 方法返回數組

[英]Laravel 5.2 - pluck() method returns array

我正在嘗試升級我的項目 L5.1 -> L5.2。 升級指南中,有一件事我不清楚:

Collection、query builder 和 Eloquent query builder 對象上的lists方法已重命名為pluck 方法簽名保持不變。

沒關系,將重構從lists()重命名為 pluck pluck()不是問題。 但是 L5.0 和 L5.1 中有用的 pluck pluck()方法呢?

來自5.0 文檔

從一行中檢索單個列

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

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

更新:

例子:

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

L5.1:

// int(1)

L5.2:

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

pluck()的當前替代方法是value()

laravel pluck 返回一個數組

如果您的查詢是:

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

然后數組是這樣的(鍵是項目的索引。自動遞增值):

[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]

但如果你這樣做:

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

那么關鍵是數據庫中的實際索引。

key||value
[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]

您可以將任何值設置為鍵。

在 Laravel 5.1+ 中,你可以使用 value() 而不是 pluck。

要獲得第一次出現,您可以使用

DB::table('users')->value('name');

或使用,

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

我使用 laravel 7.x 並將其用作解決方法: ->get()->pluck('id')->toArray();

它返回一個 ids [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();

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

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

這將比使用 PHP 框架更快,因為它將利用 SQL 查詢為您進行行選擇。 對於普通收藏,我認為這不適用,但由於您使用的是數據庫......

Larvel 5.3:指定一個 Select 子句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM