[英]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.