Reputation: 556
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?
Upvotes: 0
Views: 219
Reputation: 1379
Use EntityType instead.
Example:
$builder->add('twitterSearch', EntityType::class, array(
'class' => TwitterSearch::class,
'choice_label' => 'name',
));
Upvotes: 1