2012-03-06 21 views
1

私はフォーラムや公式のドキュメントでも見つかったいくつかの異なる例を試しましたが、この作業を理解して作っているようです。Doctrine 2.1:基本的なアノテーションマッピング

非常にシンプルですが、私が書いたものは動作しません!

したがって、CategoryエンティティとSiteエンティティがあります。 1つのカテゴリには多くのサイトが必要です。それは本当にそうです。それらをマップする方法は?

私はOneToMany関係としてフィールドにCategoryエンティティでサイトを持つべきで理解し、ManyToOneなどSiteエンティティでカテゴリフィールド?

、私が試した最も基本的なコードはこれです:

app/console doctrine:generate:entities TestSampleBundle\Entity\Category (or Site)を、しかし、言う:

/** 
* @ORM\OneToMany(targetEntity="Site", mappedBy="category") 
*/ 
protected $sites; 

/** 
* @ORM\ManyToOne(targetEntity="Category") 
*/ 
protected $category; 

これは(symfonyの2に)呼び出すときにエラーを与えない

Namespace "..." does not contain any mapped entities.

私はDoctrineをかなり新しくしているので、侮辱をしないでください。私は例を理解できないかもしれないことに同意します。そして、彼らは完全に働くことができますしかし、それでも2文章で説明する人が必要なので、どこから始めるべきか分かります。私はこれまでマッピングを動作させることはできませんでした。

+0

あなたのネームスペースを表示して使いたいですか? – Sgoettschkes

+0

はい、ここに完全なエンティティがあります:http://pastebin.com/NvcYKVj9 http://pastebin.com/UT3Zv5Ba私はSymfonyのコンソールからそれらを生成しようとしてエラーを受け取ります。 –

答えて

0

あなたペーストビンに見た後、私はあなたがあなたの名前空間を持ついくつかの問題がある可能性があります認識:

namespace Tony\NachalotoBundle\Entity; 

namespace Tony\NachalotoBundle\Entity\Catalog; 

を交換してみて、フォルダに配置することを確認してください

src/Tony/NachalotoBundle/Entity 

一般的なアドバイスとして:あなたのネームスペースがあなたのフォルダ構造と一致し、symfonyコマンドであなたの使い方を確認してください。オートローダは、名前空間に注意を払うだけでうまく動作します。

+0

まあ、私のエンティティは同じフォルダ/名前空間にあり、Doctrineのドキュメントによれば、同じ名前空間にあれば問題なく互いを見ることができます。私の世代のコマンドが間違っているかもしれないと思う。 –

+0

実際には、コマンドでTony \ NachalotoBundle \ Entity \ Catalogと言うべき名前空間TestSampleBundle \ Entity \ Categoryを使用します。 symfony2の規約ではないことを覚えておいてください。あなたのエンティティをTony \ NachalotoBundle \ Entityに直接配置する必要があると言います。 – Sgoettschkes

+0

はい、それは問題でした。私のコマンドは間違っていて、ManyToOne側では 'inversedBy'も見逃していました。ありがとう! –

0

他の教義宣言形式(yml、xml、...)がないことを確認してください。

私の場合、MyBundle、../Resources/doctrine/Users.orm.ymlの中に、エンティティ定義の注釈を読んでいないdoctrineを引き起こしていたファイルがありました。

不要なので、このフォルダを削除すると、クラスUserがアノテーションで定義され、問題が解決しました。