1

Symfony2 と Doctrine2 ODM (mongoDB) に問題があります。「ステータス」というコレクションにオブジェクトを永続化しようとしています。これは非常に単純なオブジェクトであり、参照はまったくなく、'name' という名前のプロパティが 1 つだけです。これが私の Status ドキュメント クラスのコードです。

<?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 行目

この問題の最も奇妙な部分は、Status オブジェクトがデータベースに保存されていることですが、このエラーが発生してコードがクラッシュすることです。ただ、解決方法がわかりません...

誰かがこの問題に遭遇し、それを修正する方法を知っているなら、それは非常に役に立ちます:)

ありがとう !

4

2 に答える 2

0

ありがとうございました !問題が発生しました... php.ini (PHP CLI ではなく Apache で使用されるもの) 内で max_input_nesting_level パラメータを上げ、Apache を再起動しました。 ..

たぶん編集する別のパラメータがありますか?

ありがとう !

于 2014-03-08T15:00:04.467 に答える
0

それはphp設定エラーです: $this->function1->function2.....function100 のような深い関数でsymfonyを使いすぎています

これは必ずしもコード化する必要はありませんが、すべての symfony がオブジェクト指向であることを考慮する必要があります ...

これを修正するには、php.ini でネストされた値の制限を引き上げてから、Apache を再起動する必要があります。

于 2014-03-08T08:22:08.880 に答える