[英]Laravel rename collection keys
我有以下行來獲取 collections 的數組。
$tags = Tag::all()->map->only(['id', 'name']);
這會產生以下數據。
[{"id":1,"name":"tag 2"},{"id":2,"name":"tag 3"},{"id":3,"name":"tag-44"},{"id":4,"name":"biyoloji"}]
我的目標是重命名 collections 中的鍵名,如下所示。
[{"value":1,"text":"tag 2"},{"value":2,"text":"tag 3"},{"value":3,"text":"tag-44"},{"value":4,"text":"biyoloji"}]
基本上,我想將“key”重命名為“value”,將“name”重命名為“text”。 我嘗試了 pluck pluck()
function, get()
function,映射但無法正常工作。 最有可能的是,使用 foreach 和toArray()
對其進行迭代可以解決問題,但我正在尋找正確的方法來做到這一點。 我的環境是 Laravel 8 和 PHP 7.4
您可以通過查詢更有效地做到這一點
$tags = Tag::get(['id as value', 'name as text']);
我可以提出的最佳方式:
$tags = Tag::query()->get(['id', 'name'])
->map(function($tag){
return [
'value' => $tag->id,
'text' => $tag->name,
];
})
->toArray();
注意get(['id', 'name])
調用。 將必填字段傳遞給get
方法有助於提高查詢性能。 特別是如果表中有很多未使用的列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.