Doctrine запрос для аутентификации

#mysql #symfony1 #doctrine #dql

#mysql #symfony1 #доктрина #dql

Вопрос:

Рассмотрим этот запрос:

 $query = Doctrine::getTable('sfGuardUser')
      ->createQuery('u')
      ->innerJoin('u.Groups g')
      ->where('u.name = 'username')
      ->adnWhere('g.name <> 'groupname')
  

Это возвращает пользователя с ‘username’ независимо от его ‘groupname’. Мне нужно возвращать пользователя только в том случае, если у него НЕТ отношения ‘groupname’.

Ответ №1:

Вы должны использовать ключевое слово WITH в вашем внутреннем соединении. Это в основном добавляет условия к неявному предложению ON внутреннего соединения.

 $query = Doctrine::getTable('sfGuardUser')
      ->createQuery('u')
      ->innerJoin("u.Groups g WITH g.name <> 'groupname'")
      ->where('u.name = 'username')
  

Дополнительная информация здесь.