簡體   English   中英

Laravel 重命名集合鍵

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

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