Cod*_*der 11 php laravel eloquent
我在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"}]
Run Code Online (Sandbox Code Playgroud)
如果我运行以下代码:
$TheEpisode->TheNumbers->pluck('episodeNumber');
Run Code Online (Sandbox Code Playgroud)
我会得到以下结果:
[100,210]
Run Code Online (Sandbox Code Playgroud)
我想保留每个号码的按键,我怎样才能做到这一点?
这是我的预期结果:
[{"episodeNumber":100},{"episodeNumber":210}]
Run Code Online (Sandbox Code Playgroud)
TheEpisode->TheNumbers->reduce(function ($result, $episode) {
$episodeData = (collect())->put('episodeNumber', $episode['episodeNumber']);
$result[] = $episodeData;
return $result;
}));
Run Code Online (Sandbox Code Playgroud)
Rwd*_*Rwd 25
Pluck可以采取两个参数.第二个是价值可以被键入的东西.
你应该能够做到:
$TheEpisode->TheNumbers->pluck('episodeNumber', 'episodeID');
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
这可以通过将第二个参数传递给pluck来简单地实现。从文档:
您还可以指定您希望如何对结果集合进行键控:
$plucked = $collection->pluck('name', 'product_id');
$plucked->all();
// ['prod-100' => 'Desk', 'prod-200' => 'Chair']
Run Code Online (Sandbox Code Playgroud)
尝试这样的东西,它应该使用map...
return $TheEpisode->TheNumbers->map(function ($episode) {
return ['episodeNumber' => $episode['episodeNumber']];
});
Run Code Online (Sandbox Code Playgroud)