在教义中使用多对一和多对多关系时的"Not null violation: 7" 2



我有一个非常基本的模式:

comment.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 ...

现在,一切正常。我可以从Comments反向获得Pages。问题是,当我尝试将 new 行插入数据库时,它说page_idnull

示例:

$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和许多关系关系,它可以起作用!如果我使用它们,即使我给了它,它也是无效的...

我的错误在哪里?任何帮助或想法都将受到赞赏!

编辑

我找到了这种方法:getReference()

$item = $em->getReference('MyProjectModelItem', $itemId);
$cart->setPage($item);

现在是工作,但我不知道这是正确的方法。请让我保持原样。

基本上,我想添加 comment 没有修改(不要删除或更新)页面表。但是,我想尽可能多地找到它们。

当要在注释实体中添加页面时,应调用像$comment->setPage($page)这样的方法,如果您使用php app/console doctrine:generate:entities命令行,则将自动生成此方法。$页面对象应该是从数据库加载的$页面对象。例如

$page = $this->getDoctrine()->getRepository('Pages')->findOneBy(array('id' => $pageId));
$comment = new Comments();
$comment->setPage($page);
$comment->setText($textData);
$this->_em->persist($comment);
$this->_em->flush();

如果这无济于事,请从控制器和页面和注释实体中发布您的代码。

相关内容

  • 没有找到相关文章

最新更新