【问题标题】:Symfony2 + Doctrine MongoDB ODM - Nesting level too deep when flush()Symfony2 + Doctrine MongoDB ODM - 刷新时嵌套级别太深()
【发布时间】:2014-04-11 11:43:11
【问题描述】:

我对 Symfony2 和 Doctrine2 ODM (mongoDB) 有疑问。我正在尝试将一个名为“状态”的对象保存到我的集合中。这是一个非常简单的对象,绝对没有引用,只有一个名为“名称”的属性。这是我的状态文档类的代码。

<?php
namespace Site\BlablaBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
 * Status
 *
 * @MongoDB\Document(repositoryClass="Site\BlablaBundle\Repository\StatusRepository")
 */
class Status
{
/**
 * @MongoDB\Id(strategy="AUTO")
 */
protected $id;

/**
 * @MongoDB\String
 */
protected $name;

/**
 * Get id
 *
 * @return id $id
 */
public function getId()
{
    return $this->id;
}

/**
 * Set name
 *
 * @param string $name
 * @return self
 */
public function setName($name)
{
    $this->name = $name;
    return $this;
}

/**
 * Get name
 *
 * @return string $name
 */
public function getName()
{
    return $this->name;
}

}

当我尝试从 EventListener 或我的 Controller 中持久化一个 Status 对象时,我遇到了一个无法修复的问题。

<?php
$status = new Status();
$status->setName('Hello');
$documentManager->persist($status);
$documentManager->flush();

执行 flush() 方法时出现此错误:

( ! ) 致命错误:嵌套级别太深 - 递归依赖?在 C:\wamp\www\symfony\vendor\doctrine\mongodb\lib\Doctrine\MongoDB\Cursor.php 第 483 行

这个问题最奇怪的部分是我的状态对象存储在数据库中,但是引发了这个错误,导致我的代码崩溃。就是不知道怎么解决……

如果有人遇到过这个问题并且知道如何解决它,那将非常有帮助:)

谢谢!

【问题讨论】:

  • flush() 很可能涉及其他一些组件或文档,而您上面的代码并不是真正导致错误的原因。关于用例和应用程序,您还有什么可以告诉我们的吗?

标签: php mongodb symfony doctrine odm


【解决方案1】:

这是一个 php 配置错误:您在 $this->function1->function2.....function100 等深层函数中使用了过多的 symfony

这不是你必须编写的代码,而是考虑到所有 symfony 都是面向对象的......

要解决这个问题,你应该在 php.ini 中提高嵌套值限制,然后重新启动 apache

【讨论】:

    【解决方案2】:

    谢谢!我看到了问题......我在我的 php.ini(Apache 使用的那个,而不是 PHP CLI 使用的那个)中提出了我的 max_input_nesting_level 参数并重新启动了 Apache,phpinfo() 告诉 max_input_nesting_level 值已更新,但不幸的是错误仍然存​​在。 ..

    也许还有其他参数要编辑?

    谢谢!

    【讨论】:

      猜你喜欢
      • 2015-06-20
      • 1970-01-01
      • 2012-05-20
      • 2015-04-10
      • 1970-01-01
      • 2015-01-08
      • 2017-08-13
      • 1970-01-01
      • 2012-12-20
      相关资源
      最近更新 更多