How to avoid "Entities passed to the choice field must be managed. Maybe persist them in the entity manager?"

According to the code shown on your GitHub project, the Question entity has the following constructor:

public function __construct() 
{
    $this->questionCategory = new QuestionCategory();
}

When you create an entity form field, it can only contain values that are managed by doctrine, but your new questionCategory is not managed.

Usually, the best solution is just to not fill this entity field in the constructor, but only in those places you strictly need it. When building a form, Synfony will fill it for you after submitting and calling $form->handleRequest().

So, in your case, just remove the Question entity's constructor.

After that, you'll also need to implement the __toString() method in QuestionCategory entity:

 public function __toString(){
       return 'whatever you neet to see the type`;
 }

Beware, this error can also be raised when using 'by_reference' => false, in your form type with relations that are not ManyToMany.
An unfortunate copy/paste put me in this situation.


In my case I was having this issue because I was using EntityType instead of ChoiceType, to build the selectList.

EntityType display only data from database, instead ChoiceType can display "not managed" objects.

I hope this will help.