【问题标题】:Silex and Doctrine - ORMException: Unknown Entity namespace alias [semi fixed]Silex 和 Doctrine - ORMException:未知实体命名空间别名 [半固定]
【发布时间】:2014-09-15 07:04:50
【问题描述】:

我正在尝试在使用 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);

经过一些研究可能的解决方案:

  • auto_mapping: true => 试过了,没有成功
  • 注册命名空间 => 已尝试,不确定是否正确,可能是解决方案,请告知如何正确操作
  • 除此之外,我还尝试搜索具有类似“用法”的 git 存储库,但没有找到 :(

更新

目前我在查询中使用以下行并且它有效

FROM 
InstaLikes\Entity\User u

【问题讨论】:

    标签: doctrine-orm doctrine silex


    【解决方案1】:

    当您创建自定义查询时,您应该使用完整的命名空间,在这种情况下: Foo\Entity\用户

    【讨论】:

    • 感谢答案,是的,这就是我解决问题的方法,但是我希望让它更像 Symfony (Foo:User)
    • 因为你的别名是core,你试过core:User吗?
    【解决方案2】:

    我假设您已经检查了您在映射选项中提供的别名?

    $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 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2013-12-19
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多