У меня есть таблица рассказов и таблица пользователей. Идентификатор столбца в таблице рассказов - это внешний ключ, который ссылается на идентификатор в таблице пользователя.
Я установил взаимосвязь, что пользователь может иметь много историй, которые хранятся в таблице истории. Я создал сущности обеих таблиц.
Но если попытаться продолжить операцию только в таблице истории, она запрашивает детали для новой записи пользователя.
Моя цель - добавить новую историю с существующим userId
.
Сообщение об ошибке здесь:
Новый объект был найден через связь "Story # _userId", которая не настроен на каскадное сохранение операций для объекта: Пользователь @0000000038960c50000000008ea93852. Чтобы решить эту проблему: явно вызовите EntityManager # persist() на этом неизвестном объекте или configure cascade сохраняет эту ассоциацию в сопоставлении, например @ManyToOne (.., каскад = {\ "сохраняются \" }).
Я установил отношение ManyToOne в объекте Story
:
/**
* @ManyToOne(targetEntity="User", inversedBy = "_story" )
* @JoinColumns({
* @JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $_userId;
Я проверил схему базы данных, и она показывает, что отношения установлены правильно. Итак, я сделал процесс вставки истории.
$user = new User();
$user->setUserId($id);
$story = new Story();
$story->setContent("....");
$story->setUserid($user);
$this->em->persist($story);
$this->em->flush();