2016-11-22 3 views
3

Gibt es eine Methode, um Eigenschaften aus mehrdimensionalen Sammlungen zu entfernen?Laravel-Sammlungen - Verwendung außer bei mehrdimensionaler Sammlung

beispiels Ich habe

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

Ich versuche, die gleiche Sammlung zu erhalten, aber ohne die Punkte Schlüssel/Objekt.

Ich weiß, dass ich es so etwas tun könnte

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

aber ich bin der Hoffnung, ein fließender Weg, dies zu tun, gibt es, wie ich ich ->except(['0.points']); tun können, gefunden haben, die sie von der ersten entfernt, Ich dachte, ist da ein magisches Schlüsselwort, das als Schlüssel zählt? ähnlich wie ->except(['#.points']); so macht es das für jeden?

Antwort

0

Für jetzt (Laravel 5.3) gibt es wirklich nichts einfacher als diese map (oder transform) Methode. Natürlich ist nichts so einfach zu verstehen, wenn Sie später auf den Code zurückkommen.

Sie könnten jedoch Collection erweitern und Wildcards in except ähnlich, wie zum Beispiel pluck tut es, aber für mich ist das ein Overkill.

Verwandte Themen