如何将其转换为Doctrine 2 QueryBuilder格式?

PMo*_*bed 13 symfony doctrine-orm

我想用Doctrine编写嵌套查询; 示例SQL如下所示:

SELECT * FROM layer WHERE layer.id NOT IN 
               (SELECT task_id FROM users_tasks WHERE user_id = 1) 
AND parent_id IS NOT NULL AND leaf IS TRUE
Run Code Online (Sandbox Code Playgroud)

我在转换SECOND SELECT语句时遇到问题.

提前致谢.

我想与使它createQueryBuildercreateQuery.

a.a*_*dad 34

试试这个 :

1)创建子查询

$subquery = $this->_em->createQueryBuilder()
    ->select('t.id')
    ->from('yourBundle:Task', 't')
    ->innerjoin('t.user','u')
    ->where('u.id = 1')
    ->getDQL();
Run Code Online (Sandbox Code Playgroud)

2)创建查询后

$query = $this->_em->createQueryBuilder();
$query->select('l')
      ->from('yourBundle:Layer', 'l')
      ->where($query->expr()->notIn('l.id', $subquery))
      ....;
Run Code Online (Sandbox Code Playgroud)

我测试了它,它的工作原理:)

  • @ RoydonD'Souza子查询不考虑参数(getDQL)你应该将参数传递给$ qb而不是 (2认同)