原则2.1:基本注释映射


Doctrine 2.1: Basic annotation mapping

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

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

因此,我有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很陌生,所以请不要侮辱我,我同意我可能无法理解这些例子,它们可能非常有效,但即使如此,我也需要有人用两句话来解释这一点,这样我就知道从哪里开始了。我从来没有设法使映射工作。

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

尝试更换

namespace Tony'NachalotoBundle'Entity'Catalog;

带有

namespace Tony'NachalotoBundle'Entity;

并确保将其放在文件夹中

src/Tony/NachalotoBundle/Entity

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

确保没有任何其他条令声明格式(yml、xml…)。

就我而言,MyBundle中有一个文件/导致条令未阅读实体定义注释的资源/条令/Users.orm.yml。

删除这个文件夹,因为它不需要,因为类User是通过注释定义的,解决了我的问题。