[英]Laravel - pluck with specified keys
我有一行類似於以下的代碼:
Sport::pluck('id', 'name)
我正在處理需要以下格式的列表的前端JavaScript:
var list = [
{ text: 'Football', value: 1 },
{ text: 'Basketball', value: 2 },
{ text: 'Volleyball', value: 3 }
...
]
我試圖弄清楚如何將我從模型中提取的id
和name
值轉換為類似於Javascript list
的格式。
如果不清楚,我期待與含有兩個鍵的關聯數組來結束: text
和value
,其中text
代表name
在我的模型領域,其中value
代表id
模型的-我希望這是有道理的。
我將如何處理?
我最初嘗試過類似的操作(無需檢查文檔)
Sport::pluck(["id" => "value", "name" => "text]);
但這不是您要做的,這已經很清楚了。 我還嘗試了一些與地圖相關的代碼段,對於Ctrl-z來說似乎無法實現。
有什么建議么?
您可以使用地圖。( https://laravel.com/docs/5.8/collections#method-map )
$mapped = Sport::all()->map(function($item, $index) {
return [
"id" => $item["id"],
"name" => $item["text"]
];
});
這是最簡單的方法。 實際上,Laravel提供了更好的方法。 您可以使用api資源來從雄辯的前端轉換數據: https : //laravel.com/docs/5.8/eloquent-resources
pluck
的目的不是你打算做什么,
請看下面的例子,
Sport::selectRaw("id as value, name as text")->pluck("text","value");
// ['1' => 'Football', '2'=>'BasketBall','3'=>'Volleyball',...]
句法
$plucked = $collection->pluck('name', 'product_id');
// ['prod-100' => 'Desk', 'prod-200' => 'Chair']
請參閱文檔 。
您可以使用簡單的代碼輸出。
Sport::selectRaw('id as value, name as text')->get();
另一種方法是使用map->only()
:
Sport::all()->map->only('id', 'name');
嘗試使用toArray
函數:
Sport::pluck('id', 'name)->toArray();
然后,您可以使用json_encode
php函數返回結果;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.