Я работаю в Doctrine 2.6. Я не использую Symfony, просто работаю на своей собственной платформе. Я искал везде в сети и здесь в стеке, и каждое решение, которое я нашел, заканчивается одной и той же ошибкой.
Пожалуйста, помогите
Сущность пользователя
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\UniqueConstraint;
/**
* @ORM\Entity
* @ORM\Table(name="user",uniqueConstraints={@UniqueConstraint(name="user_idx", columns={"email"})})
*/
class User
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\Column(type="integer")
* @var int
*/
protected $id;
/**
* @ORM\Column(type="string")
* @var string
*/
protected $email;
/**
* @ORM\OneToOne(targetEntity="UserProfile", mappedBy="user")
*/
protected $profile;
Сущность профиля
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\JoinColumn;
/**
* @ORM\Entity
* @ORM\Table(name="user_profile")
*/
class UserProfile
{
/**
* @var integer
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var User
* @ORM\OneToOne(targetEntity="User",inversedBy="profile")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
Использование в контроллере
$this->user = $this->entityManager->getRepository('User')->findOneBy(['email' => $login])
$profile = new \UserProfile();
$profile
->setUser($this->user)
->setAccountType(1);
$this->entityManager->persist($profile);
$this->entityManager->flush();
Этоошибка, создаваемая доктриной, когда я пытаюсь сохранить и очистить дочернюю сущность.
(!) Неустранимая ошибка: Uncaught Doctrine \ ORM \ ORMInvalidArgumentException: новая сущность была найдена через отношение 'UserProfile # user', который не был настроен для каскадного сохранения операций для объекта: User @ 0000000045b82749000000006e7c58e6. Чтобы решить эту проблему: либо явно вызовите EntityManager # persist () для этого неизвестного объекта, либо настройте каскадное сохранение этой ассоциации в сопоставлении, например @ManyToOne (.., cascade = {"persist"}). Если вы не можете выяснить, какая сущность вызывает проблему, реализуйте 'User #__ toString ()', чтобы получить подсказку. в D: \ wamp64 \ coresys \ vendor \ doctrine \ orm \ lib \ Doctrine \ ORM \ ORMInvalidArgumentException.php в строке 102
(!) Doctrine \ ORM \ ORMInvalidArgumentException: новый объект был найден через отношение 'UserProfile # user ', который не был настроен для каскадного сохранения операций для объекта: User @ 0000000045b82749000000006e7c58e6. Чтобы решить эту проблему: либо явно вызовите EntityManager # persist () для этого неизвестного объекта, либо настройте каскадное сохранение этой ассоциации в сопоставлении, например @ManyToOne (.., cascade = {"persist"}). Если вы не можете выяснить, какая сущность вызывает проблему, реализуйте 'User #__ toString ()', чтобы получить подсказку. в D: \ wamp64 \ coresys \ vendor \ doctrine \ orm \ lib \ Doctrine \ ORM \ ORMInvalidArgumentException.php в строке 102
я попытался добавить cascade = {"persist"} для обеих сущностей иследующая ошибка является результатом
(!) Неустранимая ошибка: Uncaught PDOException: SQLSTATE [23000]: Нарушение ограничения целостности: 1062 Повторяющаяся запись 'sales@mk2solutions.com' для ключа 'user_idx' в D: \ wamp64 \ coresys \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ AbstractMySQLDriver.php в строке 55 (!) Doctrine \ DBAL \ Exception \ UniqueConstraintViolationException: возникла исключительная ситуация при выполнении пользователя INSERT INTO (электронная почта, firstName, lastName, пароль, accessRole, status, selectedOn, loggedInOn) ЗНАЧЕНИЯ (?,?,?,?,?,?,?,?) 'с параметрами ["sales@mk2solutions.com", "Matthew", "Chitty", {}, "ROLE_ADMIN", null, null, null]: SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись 'sales@mk2solutions.com' для ключа 'user_idx' в D: \ wamp64 \ coresys \ vendor \ doctrine\ DBAL \ Lib \ Doctrine \ DBAL\ Driver \ AbstractMySQLDriver.php в строке 55