我正在通过开发Symfony应用程序来学习教义,我的代码有问题。我正在尝试从flashcards
表中获取所有记录,但那些记录都放在trash
表中。换句话说,我需要trash
表中不存在的抽认卡。
trash
和flashcards
与一对一关系相关。 flashcards's
主键是trash's
外键,所以我尝试了如下操作:
$qb = $this->createQueryBuilder('f');
$expr = $qb->expr();
$query = $qb
->join('f.trash', 't')
->andWhere($expr->neq('t.flashcard', 'f.id'))
->getQuery()
->getResult();
查询已正确执行,没有错误,也没有返回的记录。
请问您能不能写出为什么此ORM代码不返回任何记录,您能给我一些提示使其工作吗?
提前感谢您的回答!
哪里表A =抽认卡,表B =垃圾箱;
获取示例的示例:
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null
more read on possible joins and their queries
使用Doctrine不会强制您使用其queryBuilder
,也可以在Docktrine中使用普通的SQL。您所需要的就是自行构建查询,并使用documentation中的Doctrine连接执行查询:
use Doctrine\DBAL\DriverManager; $conn = DriverManager::getConnection($params, $config); $sql = "SELECT * FROM articles"; $stmt = $conn->query($sql);
在Doctrine中,没有正确的联接,也没有外部联接,我的猜测是这是由于项目的本质,它是简单性,更重要的是可移植性。
也许,如果您想给查询生成器最后一次尝试,此question也会以某种方式为您提供帮助。