我有一个非常基本的架构,如下所示:
评论.yml:
manyToOne:
pages:
targetEntity: Pages
inversedBy: comments
joinColumn:
name: page_id
referencedColumnName: idx
... other things ...
Pages.yml:
oneToMany:
comments:
targetEntity: Comments
mappedBy: pages
cascade: ["persist"] // i added this later but has no effect for both persist and merge.
orderBy:
idx: desc
... other things ...
现在,一切正常。我可以Pages
从Comments
和反转。问题是,当我尝试向数据库插入新行时,它说page_id
是null
.
例子:
$comment = new Comments();
$comment->setPageId(2); // it is "2"
$comment->setText($textData);
$this->_em->persist($comment);
$this->_em->flush($comment);
现在结果是假的。它抛出一个异常并说SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "page_id" violates not-null constraint
。
好吧,如果我删除 oneToMany 和 ManyToOne 关系,它就可以了!如果我使用它们,即使我给它它也会说它是空的......
我的错误在哪里?任何帮助或想法表示赞赏!
编辑:
我找到了这个方法:getReference()
$item = $em->getReference('MyProject\Model\Item', $itemId);
$cart->setPage($item);
现在它正在工作,但我不知道这是否是正确的方法。请启发我。
基本上,我想在不修改(不删除也不更新)页表的情况下添加评论。但是,我想将它们作为 ManyToOne 和 OneToMany 一起获取。