我将我的实体写在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不能递归工作,然后,我甚至无法在我的实体元数据中使用我的实际结构
答案 0 :(得分:0)
如果您已经编写了实体类,为什么要尝试生成它们?
驱动新项目的典型方法是编写带注释的实体类,并使用orm:schema-tool:create
生成数据库模式。
我见过的大多数示例都会根据类的命名空间名称将实体粘贴到库/下,在某些嵌套目录中,就像您所描述的那样。这通常是一件好事,因为它适用于默认的Doctrine2自动加载器设置。
如果您没有尝试将Doctrine2放到现有的数据库架构上,我建议您只需将所有实体类文件粘贴到库// Entity / .php等某个位置,并使用orm:schema-tool:update
和{ {1}}为您管理数据库。
答案 1 :(得分:0)
使用arg --generate-annotations
。