Symfony 2查询生成器无关联联接(交叉联接)

Symfony 2查询生成器无关联联接(交叉联接),symfony,dql,Symfony,Dql,我正在尝试使用查询生成器连接两个没有关系的表 预期的最终结果: SELECT x, y FROM x JOIN y 查询生成器代码: $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('x'); $qb->from('Test1', 'x'); $qb->join('Test2', 'y'); $qb->orderBy('x.name', 'ASC'); 生成以下DQL:

我正在尝试使用查询生成器连接两个没有关系的表

预期的最终结果:

SELECT x, y
FROM x
JOIN y
查询生成器代码:

$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('x');
$qb->from('Test1', 'x');
$qb->join('Test2', 'y');
$qb->orderBy('x.name', 'ASC');
生成以下DQL:

按x.name ASC从Test1 x内部连接Test2 y顺序选择x

这将导致语法错误:

[Syntax Error]第0行第137列:错误:预期为文字,获得“BY”

实体Test1和Test2没有关系(不在代码中,也不在数据库中)

有没有办法做到这一点? 我想使用查询生成器,因为我有许多其他依赖于查询生成器的查询功能(用于过滤和排序等)


我知道这在普通SQL或DQL查询(不是由查询生成器生成)中是可能的。

您可以尝试以下可能性:

public function getYourData($users) {
    $qb = $this->entityManager->createQueryBuilder();
    $qb
        ->select('x', 'y')
        ->from('Test1', 'x')
        ->leftJoin(
            'Test2',
            'y',
            \Doctrine\ORM\Query\Expr\Join::WITH,
            'x.id = y.reference_id'
        )
        ->orderBy('x.name', 'ASC');

    return $qb->getQuery()->getResult();
}

但这没有关系。所以x与yDon无关,我不明白为什么要将两个完全不同的表作为一个表进行排序?这是非常糟糕的设计实践。这正是我想要的。我有一个带域的表和一个带参数的表。我想要一个包含所有域的所有参数列表的结果集。解决方案是可以实现的,但不仅仅是条令,您需要查询域和参数,将它们转换为数组,然后合并到单个数组中。使用排序思想(在合并两个数组之前,您可以按照自己的意愿对它们进行排序,无论哪种方式它们都没有任何关系),我希望在SQL中获得结果(而不是在PHP中合并数组)的原因是将执行额外的(子)查询,以查找域/参数组合的值。我需要对这些值进行分页、筛选和排序。我知道这在DQL中可能无法做到,我打开这个问题以确保这是不可能的。