Я создаю страницу управления пользователями, на которой создаю или редактирую пользователей.
Пользователь состоит из двух сущностей, пользователь и профиль, которые связаны отношениями один к одному (я бы слился, но не могу по историческим причинам).
/ * User.php - Класс сущности
/**
* @var Profile
* @Assert\Type(type="App\Entity\Profile")
* @Assert\Valid()
* @ORM\OneToOne(targetEntity="Profile", mappedBy="user", cascade={"persist"})
*/
private $profile;
/ * Profile.php - класс сущности профиля
/**
* @var \App\Entity\User
*
* @ORM\OneToOne(targetEntity="App\Entity\User", inversedBy="profile")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $user;
Я построил две формы.
Одна из форм - это форма профиля, которая содержит все основные поля профиля (first_name, last_name, email), но не содержит явно поле отношения (user_id).
Другая форма - это форма пользователя, которая содержит основные поля пользователя (имя пользователя, пароль), а также форму профиля.
$builder->add('profile', ProfileForm::class);
Когда я использую эту форму для редактирования, все работает нормально, и изменения обоих объектов сохраняются. Но когда я пытаюсь использовать форму для создания нового пользователя, это терпит неудачу, говоря, что мне не хватает user_id.
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null
Похоже, это должно сработать, но я что-то упускаю.