I have a User entity class that inherits from FOSUserBundle BaseUser class. On the other side an Avis entity class.
/**
* Avis
*
* @ORM\Table()
* @ORM\Entity
*/
class Avis
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer
*
* @Assert\NotBlank(message = "Merci d'attribuer une note", groups = {"Default"})
*
* @ORM\Column(name="note", type="smallint")
*/
private $note;
/**
* @var string
*
* @Assert\NotBlank(message = "Merci d'entrer un message", groups = {"Default"})
* @Assert\Length(max = 500, maxMessage = "Votre message doit contenir au maximum {{ limit }} caractères de longueur", groups = {"Default"})
*
* @ORM\Column(name="message", type="string", length=500)
*/
private $message;
/**
* @Assert\Type(type="LeJardinEbene\Bundle\Entity\User")
*
* @ORM\OneToOne(targetEntity="LeJardinEbene\Bundle\Entity\User", cascade={"persist"}, inversedBy="avis")
* @ORM\JoinColumn(nullable=true)
*/
private $user;
/**
* User
*
* @ORM\Table(name="fos_user")
* @ORM\Entity
*/
class User extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @Assert\Type(type="LeJardinEbene\Bundle\Entity\Avis")
*
* @ORM\OneToOne(targetEntity="LeJardinEbene\Bundle\Entity\Avis", mappedBy="user")
* @ORM\JoinColumn(nullable=true)
*/
protected $avis;
So Avis is the owner of this bidirectional relation. In my form I display Avis object fields and when validating the form I would like :
- Avis to be persisted in the database (that already works)
- Relation to be persisted also => user_id in Avis table and avis_id in fos_user table
Here is what I tried without success :
$user = $this->getUser();
$form = $this->createForm('avis', $avis);
$form->handleRequest($request);
$avis = new Avis();if ($form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($avis);
$entityManager->flush();
if($user) {
$userManager = $this->get('fos_user.user_manager');
$userManager->updateUser($avis->getUser(), true);
}
Thanks. Regards,