Easily add some logic to filter out specific entities from an ArrayCollection in Symfony2. In this simple example, I wrote an app that had Node, and Comment entities separately, as well as an explicitly defined NodeComment entity. In my Node entity, I want to serialize all of the associated comments. But rather than call ->getNodeComments()
and then filter in AngularJS (or Twig, or whatever else for that matter), I just want to know that my object node.comments are the actual comments I care about.
The Entity property
/** * @Expose * @AccessType("getComments") */ protected $node_comments;
The Accessor
/** * @return array */ public function getComments() { $comments = new \Doctrine\Common\Collections\ArrayCollection(); foreach($this->node_comments as $nodeComment) { $comments->add($nodeComment->getComment()); } return $comments; }
Now, my serialized object.comments are the actual comments, instead of the ManyToMany Entity.
1 Comment
Stephan Vierkant · December 14, 2016 at 5:39 am
Why don’t you use array_map (or ArrayCollection::map())?
return $this->node_comments->map(function ($nodeComment) {
return $nodeComment->getComment();
});