Как преобразовать это в формат Doctrine 2 QueryBuilder?

Я хотел бы написать вложенный запрос с помощью 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

У меня проблема с преобразованием ВТОРАЯ SELECT заявление

Заранее спасибо

Я хотел бы сделать это сcreateQueryBuilder неcreateQuery.

Ответы на вопрос(2)

но мне нужно было создать подзапрос, используя DQL напрямую, чтобы избежать пропущенных ошибок в полях. Это не идеально, но кажется надежным решением проблемы.

Решение Вопроса

1) создай свой подзапрос

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

2) после создания запроса

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

Я проверил это, и оно работает

 a.aitboudad26 мая 2012 г., 20:08
Я изменяю запрос (подробности выше)
 a.aitboudad02 дек. 2015 г., 13:00
@ RoydonD'Souza подзапрос не учитывает параметр (getDQL), вместо этого вы должны передать параметры в $ qb
 PMoubed26 мая 2012 г., 23:34
Оно работает. Благодарность
 PMoubed26 мая 2012 г., 16:24
Мне бы хотелось, чтобы тот сcreateQueryBuilder;
 Roydon D' Souza02 дек. 2015 г., 12:09
У меня были проблемы. Я получаю неверный номер параметра: количество связанных переменных не соответствует количеству токенов в ... Можете ли вы проверить этот код и сообщить мне, где я ошибся. Evernote.com / осколок / s338 / ш / 70b0db2c-a1f8-4c82-ac87-8f6b934be18d / ...

Ваш ответ на вопрос