Doctrine 2.1:基本注释映射

时间:2012-03-06 19:34:41

标签: php orm annotations symfony doctrine-orm

我尝试过在论坛甚至官方文档中找到的几个不同的例子,但似乎无法理解并使其发挥作用。

这很简单,但我写的任何东西都不起作用!

所以,我有Category实体和Site实体。一个类别应该有很多站点。多数民营,真的。如何映射它们?

我知道我应该在Category实体中将字段 sites 作为OneToMany关系,并在Site实体中将 category 字段作为ManyToOne ?

我尝试过的最基本的代码是:

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

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

调用时(在Symfony 2中)没有错误:

app/console doctrine:generate:entities TestSampleBundle\Entity\Category (or Site),但是说:

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

我对Doctrine很新,所以请不要侮辱,我同意我可能无法理解这些例子,他们可以完美地工作,但即便如此,我需要有人用2句话来解释这个,所以我知道从哪里开始。我还没有设法让映射工作。

2 个答案:

答案 0 :(得分:0)

查看您的pastebin后,我发现您的命名空间可能存在一些问题:

尝试替换

namespace Tony\NachalotoBundle\Entity\Catalog;

namespace Tony\NachalotoBundle\Entity;

并确保将其放在文件夹

src/Tony/NachalotoBundle/Entity

作为一般建议:始终确保您的命名空间与您的文件夹结构和symfony命令中的用法相匹配。只有注意命名空间时,自动加载器才能正常工作!

答案 1 :(得分:0)

请确保您没有任何其他学说声明格式(yml,xml,...)。

就我而言,MyBundle中有一个文件,.. / Resss / doctrine / Users.orm.yml,导致学说没有读取实体定义的注释。

删除此文件夹,因为它不是必需的原因类用户是通过注释定义的,解决了我的问题。