2

投稿用のリレーショナル データベースがあります。

Post テーブル <-- OneToMany

猫のテーブルを投稿 <-- ManyToOne

カテゴリ テーブル <-- OneToMany

Doctrine @ORM を使用してテーブルを結合する場合は、エンティティでアノテーションを使用します。白い画面が表示され、エラー ログに次のエラーが表示されます。

emergency.EMERGENCY: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1052508160 bytes) {"type":1,"file":"/[PATH TO SYMFONY]/vendor/twig/twig/lib/Twig/Extension/Debug.php","line":66}

メモリ制限を 64M から 1024M に数回引き上げました。

他の誰かがこの問題を見つけましたか? ファイルを実行する > メモリのギグは良くないと思います。

クエリ ビルダーを使用してクエリを作成すると、期待どおりの結果が得られます。Doctrine リレーショナル マッピングを機能させることができれば、これはより良いものになると思います。誰もこれについて意見を持っていますか?

この件について少しアドバイスをいただければ幸いです。

前もって感謝します。

ジョー

------------ コメントに応じて編集 ---------------------------------- ------

@Cerad さん、コメントありがとうございます。データベースには約 10 行しかありません。また、私は app_dev.php にいます。以下は、私のファイルからの抜粋です。

ポストテーブル

class Post
{
    //... ^ table collumns

    /**
     * @ORM\OneToMany(targetEntity="PostCats", mappedBy="Post")
     */
    protected $PostCats;

    public function __construct()
    {
        $this->PostCats = new ArrayCollection();
    }

}

ポストキャットジョインテーブル.

class PostCats
{
    //... ^ table collumns

   /**
     * @ORM\ManyToOne(targetEntity="Post", inversedBy="PostCats")
     * @ORM\JoinColumn(name="postid", referencedColumnName="id")
     */
    protected $Post;

}

コントローラー

$posts = $this->getDoctrine()
    ->getRepository('comPostBundle:Post')
    ->find(7);
if (!$posts) {
    throw $this->createNotFoundException(
        'No product found for id '.$posts
    );
}
return new Response(print_r($posts))

結果....白い画面...小枝テンプレートにダンプされた結果を返すことも試みました。

Doctrine リレーショナル マッピングをスキップして、エンティティ リポジトリに結合を記述するだけでよいと思いますか?

4

1 に答える 1

5

@Ceradのおかげで問題は解決しました。

問題は、PHP で print_r() を実行したり、小枝テンプレートで {{ dump() }} を実行したりしていたことです。これらの関数は、エンティティや大きな配列/オブジェクトの表示を好みません。

現在、返された値の必要な部分を呼び出すだけで、データ全体をダンプしていません。そしてそれは正常に動作します!.

編集:

これはデータのダンプに機能します

\Doctrine\Common\Util\Debug::dump($object);

于 2013-10-30T10:06:42.527 に答える