Doctrine2实体命名空间

use*_*515 5 configuration entity annotations namespaces doctrine-orm

我是Doctrine2的新手,想知道如何告诉Doctrine我的实体使用哪个命名空间.我目前的配置是这样的.

我的所有实体都在命名空间"project\entity"中.所以,每当我想获得实体"颜色"时,我必须写:

$em->getRepository("project\\entity\\Color")
Run Code Online (Sandbox Code Playgroud)

如何配置Doctrine始终使用命名空间"project\entity"?

Cer*_*rad 8

您可以通过在配置对象上使用addEntityNamespace创建命名空间别名来接近您想要的内容:

$em->getConfiguration()->addEntityNamespace('NS1', 'Project\Entity');

$colorRepo = $em->getRepository('NS1:Color');
Run Code Online (Sandbox Code Playgroud)

也适用于查询.

顺便说一下,"project\\entity\\Color"也可以写成'project\entity\Color'.我还建议将项目和实体资本化以符合标准.

  • 你可以添加一个Blank命名空间别名"$ em-> getConfiguration() - > addEntityNamespace('','Project\Entity');" 并使用它$ colorRepo = $ em-> getRepository(':Color'); 没有错误.对我来说,它就像一个默认命名空间.我没有找到另一种配置默认实体命名空间的方法 (3认同)