我在Laravel中有以下集合:
["TheNumbers":[{"episodeID":16818,"episodeNumber":100,"created_at":null,"updated_at":null},{"episodeID":16818,"episodeNumber":210,"created_at":"2017-02-20 21:30:38","updated_at":"2017-02-20 21:30:38"}]
如果我运行以下代码:
$TheEpisode->TheNumbers->pluck('episodeNumber');
我会得到以下结果:
[100,210]
我想保留每个号码的密钥,我该如何实现?
这是我的预期结果:
[{"episodeNumber":100},{"episodeNumber":210}]
TheEpisode->TheNumbers->reduce(function ($result, $episode) {
$episodeData = (collect())->put('episodeNumber', $episode['episodeNumber']);
$result[] = $episodeData;
return $result;
}));
答案 0 :(得分:22)
Pluck
可以使用两个参数。第二个是值可以键入的值。
你应该可以这样做:
$TheEpisode->TheNumbers->pluck('episodeNumber', 'episodeID');
希望这有帮助!
答案 1 :(得分:5)
尝试这样的事情,它应该使用map
...
return $TheEpisode->TheNumbers->map(function ($episode) {
return ['episodeNumber' => $episode['episodeNumber']];
});
答案 2 :(得分:3)
这可以简单地通过向pluck传递第二个参数来实现。从文档中:
您还可以指定希望如何生成结果集合 键控:
$plucked = $collection->pluck('name', 'product_id');
$plucked->all();
// ['prod-100' => 'Desk', 'prod-200' => 'Chair']
答案 3 :(得分:2)
<div id="detail"></div>
这将只留下两个第一个键值对。值得记住的是:
忘记不返回新修改的集合;它修改了它被调用的集合。
这应该可以正常运作:
$collection->forget(['created_at', 'updated_at]);
答案 4 :(得分:0)
尝试使用
$TheEpisode->TheNumbers->lists('episodeNumber');
密钥将保留。
答案 5 :(得分:0)
尝试使用<div class="alingFloat">
<div class="scheduleText"> Fac </div>
<div class="scheduleText"> Type </div>
</div>
<div class="alingFloat">
<div class="scheduleText"> Curse </div>
<div class="scheduleText"> Group </div>
</div>
,如下所示:
mapWithKeys
我假设你想要这样的结果:
$TheEpisode->TheNumbers->mapWithKeys(function ($theNumber) {
return ['episodeNumber' => $theNumber['episodeNumber']
});
答案 6 :(得分:0)
为了更新Laravel,我尝试了所有步骤,但发现了
return Model::get(['name','id'])
使用键=>值将减少结果。