symfony2和doctrine2较短的实体名称

symfony2和doctrine2较短的实体名称,symfony,doctrine-orm,Symfony,Doctrine Orm,在DQL查询中不使用名称空间的人是谁?我想为我的包中的所有条令请求分配默认名称空间。在查询生成器中使用默认名称空间也很完美。我希望: $dql = "select i from MyCompanyMySuperPuperBundle:Issue i inner join MyCompanyMySuperPuperBundle:Tracker t with t.id = i.tracker

在DQL查询中不使用名称空间的人是谁?我想为我的包中的所有条令请求分配默认名称空间。在查询生成器中使用默认名称空间也很完美。我希望:

        $dql = "select i
                from MyCompanyMySuperPuperBundle:Issue i
                    inner join MyCompanyMySuperPuperBundle:Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";
而不是

        $dql = "select i
                from Issue i
                    inner join Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";
完整代码:

namespace MyCompany\MySuperPuperBundle\Entity;

use Doctrine\ORM\EntityRepository;

class IssueRepository extends EntityRepository
{
    public function findStoriesByVersion(\MyCompany\MySuperPuperBundle\Entity\Version $version)
    {
        $dql = "select i
                from MyCompanyMySuperPuperBundle:Issue i
                    inner join MyCompanyMySuperPuperBundle:Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";

        return $this->getEntityManager()
                    ->createQuery($dql)
                    ->setParameter(1, array('Epic', 'Story', 'Spike', 'Extra'))
                    ->setParameter(2, $version->getId())
                    ->getResult();
    }
}
更新:

似乎没有办法设置默认的每束前缀,我必须为所有实体使用愚蠢的前缀。。。超过200个实体。。。好啊让我们设置别名。 这是通过:

orm:
    auto_generate_proxy_classes: %kernel.debug%
    entity_managers:
        default:
            mappings:
                MyCompanyMySuperPuperBundle:
                    type: annotation
                    alias: xr
    #auto_mapping: true
现在我可以使用xr作为前缀

        $dql = "select i
                from xr:Issue i
                    inner join xr:Tracker t with t.id = i.tracker
                where t.name in (?1) and i.version = ?2";
但是现在小树枝告诉我了

呈现模板未知实体命名空间别名“UMyCompanyMySuperPuperBundle”时引发异常。在MyCompanySuperpuperBundle中:默认值:index.html.twig,第7行

而且我不能使用xr前缀作为细枝-它不起作用。你有什么想法吗

PS:如果我能在一个代码中同时使用两个别名MyCompanySuperpuperBundle-full和xr-short,那就太完美了

更新:已解决

它起作用了!现在我可以通过defautl全名和非常短的名字访问模型。 twig使用了很长的名称空间,所以它可以工作

class MyCompanyMySuperPuperBundle extends Bundle
{
    public function boot()
    {
        // implement alias XR for base namespace
        $em = $this->container->get("doctrine.orm.entity_manager");
        $config = $em->getConfiguration();
        $config->addEntityNamespace("XR", "MyCompany\\MySuperPuperBundle\\Entity");
    }
}

在条令中没有默认名称空间的方法,除非您的实体本身根本没有名称空间。但是,您可以指定一个较短的名称空间,例如

$em = $container->get('doctrine.orm.entity_manager');
$config = $em->getConfiguration();
$config->addEntityNamespace('e', 'MyCompany\\Bundle\\Entity');

之后,您可以将您的实体称为e:Issue。您可以将其放入预请求事件侦听器或捆绑包的启动方法中。

条令中没有默认名称空间,除非您的实体本身根本没有名称空间。但是,您可以指定一个较短的名称空间,例如

$em = $container->get('doctrine.orm.entity_manager');
$config = $em->getConfiguration();
$config->addEntityNamespace('e', 'MyCompany\\Bundle\\Entity');
之后,您可以将您的实体称为e:Issue。您可以将其放入预请求事件侦听器或捆绑包的引导方法中