我正在尝试在使用silex构建的应用中使用Doctrine组件。我能够让它发挥作用 - 差不多。
我有“用户”实体和相应的存储库
做的时候
$app['em']->getRepository('Foo\Entity\User')->findAll()
按预期工作,但在尝试进行自定义查询时
$this->getEntityManager()
->createQuery(
'SELECT
u
FROM
Foo:User u
WHERE c.id = :x'
)
->setParameter('x',$in)
->getResult();
我得到了这个例外
ORMException: Unknown Entity namespace alias 'Foo'
请忽略我可以使用findById()
或findBy(array('id'=>$in))
进行选择的问题,问题在于自定义查询
这是我的配置
$app['orm.em.options'] = array(
'mappings' => array(
array(
'type' => 'annotation',
'namespace' => 'Foo\Entity',
'alias' => 'core',
'path' => '%app.path%/src/Foo/Entity',
'use_simple_annotation_reader' => false,
)
));
和
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src/Foo/Entity"));
$params = $app['db.options'];
$app['em'] = EntityManager::create($params, $config);
经过一些研究可能的解决方案:
更新
目前我在查询中使用以下行并且它可以正常工作
FROM
InstaLikes\Entity\User u
答案 0 :(得分:2)
创建自定义查询时,应使用完全命名空间,在这种情况下: FOO \实体\用户
答案 1 :(得分:0)
我假设你已经检查了你在映射选项中给出的别名?
$app['orm.em.options'] = array(
'mappings' => array(
array(
'type' => 'annotation',
'namespace' => 'Foo\Entity',
'alias' => 'core',
'path' => '%app.path%/src/Foo/Entity',
'use_simple_annotation_reader' => false,
)
));
该别名选项不应设置为 Foo 吗?