Коллекции Laravel — Использование Except на многомерной коллекции

Есть ли способ удалить свойства из многомерных коллекций?

например, у меня есть

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;
}

Я пытаюсь получить ту же коллекцию, но без ключа / свойства очков.

Я знаю, что могу сделать что-то вроде

->map(function ($item) {
unset($item['points']);
return $item;
});

Однако я надеюсь, что есть более свободный способ сделать это, поскольку я нашел, что могу сделать ->except(['0.points']); который удаляет его из первого, я думал, что это как магическое ключевое слово, которое считается ключом? аналогично ->except(['#.points']); так он делает это для каждого?

3

Решение

На данный момент (Laravel 5.3) на самом деле нет ничего проще, чем это map (или же transform) метод. Конечно, нет ничего проще, когда вы вернетесь к коду позже.

Вы могли бы продлить Collection хотя и внедрить подстановочные знаки в except аналогично тому, как, например, pluck делает это, но для меня это излишество.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]