簡體   English   中英

Laravel-用指定的鍵拔

[英]Laravel - pluck with specified keys

我有一行類似於以下的代碼:

Sport::pluck('id', 'name)

我正在處理需要以下格式的列表的前端JavaScript:

var list = [
 { text: 'Football', value: 1 },
 { text: 'Basketball', value: 2 },
 { text: 'Volleyball', value: 3 }
 ...
]

我試圖弄清楚如何將我從模型中提取的idname值轉換為類似於Javascript list的格式。

如果不清楚,我期待與含有兩個鍵的關聯數組來結束: textvalue ,其中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.

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