Laravel Eloquent Pluck不丢失钥匙

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)

PHILIS PETERS(改进)

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)

希望这可以帮助!

  • 正是我需要的! (2认同)

shx*_*fee 8

这可以通过将第二个参数传递给pluck来简单地实现。从文档:

您还可以指定您希望如何对结果集合进行键控:

$plucked = $collection->pluck('name', 'product_id');

$plucked->all();

// ['prod-100' => 'Desk', 'prod-200' => 'Chair']
Run Code Online (Sandbox Code Playgroud)


Mik*_*ick 7

尝试这样的东西,它应该使用map...

return $TheEpisode->TheNumbers->map(function ($episode) {
    return ['episodeNumber' => $episode['episodeNumber']];
});
Run Code Online (Sandbox Code Playgroud)