Php 无ON子句的DBAL连接原则

Php 无ON子句的DBAL连接原则,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,在纯SQL中,我会这样做 select t1.id, t2.id from table1 t1 join table2 t2; 您如何使用dbal querybuilder实现同样的目标 $qb = $this->_em->getConnection()->createQueryBuilder() $qb->select('t1.id, t2.id') ->from('table1','t1') ->join('t1', 'table2', '

在纯SQL中,我会这样做

select t1.id, t2.id from table1 t1 join table2 t2;
您如何使用dbal querybuilder实现同样的目标

$qb = $this->_em->getConnection()->createQueryBuilder()

$qb->select('t1.id, t2.id')
   ->from('table1','t1')
   ->join('t1', 'table2', 't2') //without on clause, this doesn't work
   ->execute()
   ->fetchAll();
试试这个

$qb->select('t1.id', 't2.id')
   ->from('table1','t1')
   ->join('t1', 'table2', 't2', true)
   ->execute()
   ->fetchAll();
没有“ON”表达式的连接也称为交叉连接。 根据文档,您无法使用查询生成器执行此操作

只有内、左、右

您只需要一个本机查询:

$connection = $em->getConnection();

$statement = $connection->prepare("
    select t1.id, t2.id from table1 t1 join table2 t2
");

$statement->execute();

$results = $statement->fetchAll();

或者想进一步了解一下您真正想要接收的内容

不起作用,它在末尾添加了on子句,没有条件导致语法错误,您已经尝试过了。您是对的,只需添加真实条件:)我已经更新了我的答案