Doctrine / symfony: вывод getSqlQuery () на вкладке phpMyAdmin / SQL - PullRequest
1 голос
/ 28 мая 2010

Я создал этот запрос, который работает ОК:

$q1 = Doctrine_Query::create()
     ->from('Usuario u')
     ->leftJoin('u.AmigoUsuario a ON u.id = a.user2_id OR u.id = a.user1_id')
     ->where("a.user2_id = ? OR a.user1_id = ?", array($id,$id))
     ->andWhere("u.id <> ?", $id)
     ->andWhere("a.estado LIKE ?", 1);

echo $q1->getSqlQuery();

Вызов getSqlQuery выводит это предложение:

ВЫБРАТЬ s.id AS s__id, s.username AS s__username, s.algorithm AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.is_active AS s__is_active, s.is_super_admin AS s__is_super_admin, s.last_login AS s__last_login, s.email_address AS s__email_address, s.nombre_apellidos AS s__nombre_apellidos, s.sexo AS s__sexo, s.fecha_nac AS s__fecha_nac, s.provincia AS s__provincia, s.localidad AS s__localidad, s.fotografia AS s__fotografia, s.avatar AS s__avatar, s.avatar_mensajes AS s__avatar_mensajes, s.created_at AS s__created_at, s.updated_at AS s__updated_at, a.id AS a__id, a.user1_id AS a__user1_id, a.user2_id AS a__user2_id, a.estado AS a__estado FROM sf_guard_user с левого соединения amigo_usuario ON ((s.id = a.user2_id ИЛИ s.id = a.user1_id)) ГДЕ ((a.user2_id =? ИЛИ a.user1_id =?) И s.id <>? И a.estado как?)

Если я возьму это предложение на вкладку phpmyadmin SQL, я получу эту ошибку

1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '? ИЛИ a.user1_id =?) И s.id <>? И a.estado LIKE?) LIMIT 0, 30 'в строке 1

Почему я получаю эту ошибку?

Привет

1018 * Javi *

1 Ответ

2 голосов
/ 28 мая 2010

Вывод включает в запрос заполнители, а не фактические значения. Вам нужно заменить ? на правильные значения при выполнении этого в phpMyAdmin.

При использовании Symfony в режиме dev значения, которые вы используете для каждого запроса, отображаются на панели запросов базы данных, доступной из панели инструментов режима dev в правом верхнем углу страницы, заключенной в скобки после самого запроса.

...