Laravel 集合 - 在多维集合上使用 except

Owe*_*wen 6 php collections multidimensional-array except laravel

有没有办法从多维集合中删除属性?

例如我有

public function getPossibleAnswersAttribute()
{
    return collect([
        [
            'option' => 'A',
            'answer' => $this->answer_1,
            'points' => $this->answer_1_value
        ],
        [
            'option' => 'B',
            'answer' => $this->answer_2,
            'points' => $this->answer_2_value
        ],
        [
            'option' => 'C',
            'answer' => $this->answer_3,
            'points' => $this->answer_3_value
        ],
        [
            'option' => 'D',
            'answer' => $this->answer_4,
            'points' => $this->answer_4_value
        ]
    ]);
}

public function getPossibleAnswersWithoutPointsAttribute()
{
    $answers = $this->getPossibleAnswersAttribute()
    ->except(['0.points']);
    return $answers;
}
Run Code Online (Sandbox Code Playgroud)

我试图获得相同的集合,但没有点键/属性。

我知道我可以这样做

->map(function ($item) {
    unset($item['points']);
    return $item;
});
Run Code Online (Sandbox Code Playgroud)

但是我希望有一种更流畅的方式来做到这一点,因为我发现我可以做到->except(['0.points']);从第一个中删除它,我在想是否有像一个可以算作键的魔法关键字?类似于->except(['#.points']);所以它对每个人都这样做吗?

Pau*_*aul 0

目前(Laravel 5.3)确实没有什么比这个map(或transform)方法更简单的了。当然,当您稍后再回到代码时,没有什么比这更容易理解的了。

不过,您可以扩展Collection并以except类似于示例的方式实现通配符pluck,但对我来说,这是一种矫枉过正。