Доктрина Почему этот запрос возвращает 0 строк? - PullRequest
0 голосов
/ 01 мая 2011

У меня следующий запрос DQL:

$q = Doctrine_Query::create()
    ->select('id')
    ->from('Comment')
    ->where("active='?' AND object_id='?' AND group_name = '?'"
            , array(1, 1, 'unit'));

которые производят sql:

SELECT c.id AS c__id, c.group_name AS c__group_name, c.name AS c__name,
       c.email AS c__email
  FROM comment c
 WHERE (c.active = '?' AND c.object_id = '?' AND c.group_name = '?')

bindings: 1, 1, unit

В таблице базы данных:

id user_id object_id group_name name  active
1   0      1         unit       test  1

Когда я выполняю запрос de, он возвращает 0 строк. Почему?

Если я захожу в phpmyadmin и запускаю

SELECT * FROM comment WHERE active=1 AND object_id=1 AND group_name='unit'

результат содержит запись, которую я ищу.

В phpmyadmin запрос, сгенерированный Doctrine, идентифицирует имя таблицы как 'c'. Это очень странно, поскольку я использовал в своем приложении другие DQL-запросы, подобные этому, и работает.

Спасибо.

1 Ответ

1 голос
/ 01 мая 2011

Удалить кавычки вокруг параметров-заполнителей:

where("active=? AND object_id=? AND group_name = ?"

или используйте named parameters:

where("active= :ative AND object_id= :object_id AND group_name = :group_name"
      , array(':ative'=>1, ':objet_id'=>1, 'group_name'=>'unit')"
...