Laravel 重命名 collection 键
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"}]
我的objective是将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()
函数、get()
函数和映射,但无法正常工作。最有可能的是,用 foreach 和 toArray()
对其进行迭代就可以解决问题,但我正在寻找正确的方法来做到这一点。我的环境是 Laravel 8 和 PHP 7.4
我可以建议的最佳方式:
$tags = Tag::query()->get(['id', 'name'])
->map(function($tag){
return [
'value' => $tag->id,
'text' => $tag->name,
];
})
->toArray();
注意get(['id', 'name])
调用。将必填字段传递给 get
方法有助于提高查询性能。特别是如果 table.
中有很多未使用的列
您可以通过查询更有效地做到这一点
$tags = Tag::get(['id as value', 'name as text']);
我有以下行来获取 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"}]
我的objective是将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()
函数、get()
函数和映射,但无法正常工作。最有可能的是,用 foreach 和 toArray()
对其进行迭代就可以解决问题,但我正在寻找正确的方法来做到这一点。我的环境是 Laravel 8 和 PHP 7.4
我可以建议的最佳方式:
$tags = Tag::query()->get(['id', 'name'])
->map(function($tag){
return [
'value' => $tag->id,
'text' => $tag->name,
];
})
->toArray();
注意get(['id', 'name])
调用。将必填字段传递给 get
方法有助于提高查询性能。特别是如果 table.
您可以通过查询更有效地做到这一点
$tags = Tag::get(['id as value', 'name as text']);