Доброго времени суток.
Есть две сущности и есть связь один к одному. Это users и user_info. Связал их вот так:
/**
* Users
*
* @ORM\Table(name="users")
* @ORM\Entity
* @UniqueEntity("email")
*/
class User implements UserInterface
{
/**
* @var integer
* @ORM\Id
* @ORM\Column(nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
// ...
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\UserInfo", mappedBy="user", cascade={"persist"})
*/
protected $information;
/**
* UserInfo
*
* @ORM\Table(name="user_info")
* @ORM\Entity
*/
class UserInfo
{
/**
* @var integer
* @ORM\Id
* @ORM\Column(nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\User", inversedBy="userInfo")
* @ORM\JoinColumn(name="id", referencedColumnName="id", nullable=false)
*/
protected $user;
Добавляю данные так:
$user = $form->getData();
$user->setCreated(date('Y-m-d H:i:s'));
$user->getInformation()->setBalance(0);
$user->getInformation()->setRevShare(0);
$user->getInformation()->setMessengerType('skype');
$encoder = $this->container->get('security.password_encoder');
$encoded = $encoder->encodePassword($user, $user->getPassword());
$user->setPassword($encoded);
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
Суть в том, что у основной сущности (Users) id проставляется, а у User_info id устанавливает в null и PG отказывается такой запрос выполнять, дескать, id не может быть null , хотя, судя по профилировщику symfony, доктрина выполняет оба запроса:
SELECT NEXTVAL('users_id_seq');
SELECT NEXTVAL('user_info_id_seq');
В чем может быть дело?