我有一个故事表和用户表。故事表中的 userid 列是一个外键,它引用了用户表中的 id。
我设置的关系是用户可能有许多存储在故事表中的故事。我已经创建了两个表的实体。
但是,如果尝试仅将操作持久化到故事表,则它会询问新用户条目的详细信息。
我的目标是在现有的userId
.
我在这里发布错误:
通过未配置为实体级联持久操作的关系“Story#_userId”找到一个新实体:User@0000000038960c50000000008ea93852。要解决这个问题:要么在这个未知实体上显式调用 EntityManager#persist(),要么配置级联在映射中保持此关联,例如 @ManyToOne(..,cascade={\"persist\"})。
我在实体中设置了 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();