My question is close to this one, but does not exactly fit with mine.
I\'ve this column in an entity:
/**
* @var ArrayCollection[SubjectTag]
*
* @
Try using the doctrine2 ORM functionality for Ordering To-Many Associations like this:
/**
* @var ArrayCollection[SubjectTag]
*
* @ORM\OneToMany(targetEntity="SubjectTag", mappedBy="subject")
* @ORM\OrderBy({"position" = "ASC"})
* @Assert\Count(max = 10, maxMessage = "You can't create more than 10 tags.")
* @Assert\Valid()
*/
protected $subjectTags;
Hope this help
I found a solution, using @HasLifeCycleCallbacks.
use Doctrine\ORM\Mapping as ORM;
/**
* ...
* @ORM\HasLifecycleCallbacks
*/
class Subject
{
/**
* @var ArrayCollection[SubjectTag]
*
* @ORM\OneToMany(targetEntity="SubjectTag", mappedBy="subject")
* @Assert\Count(max = 10, maxMessage = "You can't create more than 10 tags.")
* @Assert\Valid()
*/
protected $subjectTags;
/**
* @ORM\PostLoad
*/
public function onPostLoad()
{
$tags = $this->subjectTags->toArray();
usort($tags, function($a, $b)
{
return $a->getPosition() == $b->getPosition() ? 0 : ($a->getPosition() > $b->getPosition() : -1 : 1);
});
$this->subjectTags = new ArrayCollection($tags);
}
}