I am in the middle of converting a project from Symfony 2 to Symfony 3 and have run into a problem. I have an Event entity that has a TwitterSearch entity which is defined by the following in Event.php:
/**
* @ORM\ManyToOne(targetEntity="TwitterSearch", cascade={"persist"})
* @ORM\JoinColumn(name="twitter_search_id", referencedColumnName="id")
*/
private $twitterSearch;
This is how I have set up the relationship in the EventType:
$builder->add('twitterSearch', TwitterSearchType::class, array(
'required'=>false,
));
Here is the code from the controller for when the form is submitted:
$entity = new Event();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$entity = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
}
This used to work in Symfony 2 but now when the form is submitted the following error is thrown:
Expected value of type "TwitterSearch" for association field "Event#$twitterSearch"
, got "array" instead.
I debugged the code and the twitterSearch attribute of the Event was and array. Does anyone know why it is no longer converting this to an instance of TwitterSearch?
Use EntityType instead.
Example:
$builder->add('twitterSearch', EntityType::class, array(
'class' => TwitterSearch::class,
'choice_label' => 'name',
));