我是否真的需要使用Doctrine 2来移动/编写实体?

时间:2011-03-07 12:29:30

标签: php command-line-interface doctrine-orm

我将我的实体写在let的模型/文件夹中。

类似的东西:

namespace Organisation\User;
/**
 @Entity
*/
class Customer {

/**
* @Column(type="integer") @GeneratedValue
*/
protected $_id;
}

}

所以我将使用$customer = new \Organisation\User\Customer();

实例化我的实体

好的,但如果我使用doctrine orm:generate-entities library/,它将在以下目录中生成它:

library/Organisation/User/Customer.php

是的,没关系,但是如果我查看代码,那么我没有任何注释,因此当我尝试使用它时,我得到doctrine\ORM\Mapping\MappingException: Class Organisation\User\Customer is not a valid entity or mapped super class.,因为没有任何注释。

所以我需要做的是删除命名空间,生成与具有元数据信息的实体相同的目录,移动到我的库文件夹,并添加命名空间以便使用。

它看起来很难看,我错过了什么吗?

编辑我忘了告诉那个orm:generate-entities不能递归工作,然后,我甚至无法在我的实体元数据中使用我的实际结构

2 个答案:

答案 0 :(得分:0)

如果您已经编写了实体类,为什么要尝试生成它们?

驱动新项目的典型方法是编写带注释的实体类,并使用orm:schema-tool:create生成数据库模式。

我见过的大多数示例都会根据类的命名空间名称将实体粘贴到库/下,在某些嵌套目录中,就像您所描述的那样。这通常是一件好事,因为它适用于默认的Doctrine2自动加载器设置。

如果您没有尝试将Doctrine2放到现有的数据库架构上,我建议您只需将所有实体类文件粘贴到库// Entity / .php等某个位置,并使用orm:schema-tool:update和{ {1}}为您管理数据库。

答案 1 :(得分:0)

使用arg --generate-annotations