У меня есть следующее утверждение Доктрины, которое прекрасно работает.
$query = $this->createQuery('r')
->select('u.id, CONCAT(u.first_name, " ", LEFT(u.last_name,1)) as full_name, u.first_name, u.last_name, u.gender, r.run_time')
->innerJoin('r.ChallengeUser u')
->orderBy('run_time')
->execute(array(), Doctrine::HYDRATE_ARRAY_SHALLOW);
Мне нужно добавить количество строк в это. Теперь я знаю, что с сырым SQL вы можете сделать это;
SET @rank=0;
SELECT @rank:=@rank+1 as rank, u.id, u.first_name ....etc
Итак, мой вопрос, как я могу заставить это работать с Symfony 1.4 и Doctrine?
Я использую MySQL для этого проекта.
Редактировать ...
Я понял это ..
Doctrine_Manager::getInstance()->getCurrentConnection()->standaloneQuery('SET @rank=0;')->execute();
$query = $this->createQuery('r')
->select('r.run_time, @rank:=@rank+1 rank, r.user_id, CONCAT(u.first_name, " ", LEFT(u.last_name,1)) as full_name, u.first_name, u.last_name, u.gender')
->leftJoin('r.ChallengeUser u')
->orderBy('run_time')
->execute(array(), Doctrine::HYDRATE_ARRAY_SHALLOW);
Добавьте автономный запрос, чтобы установить переменную, и поменяйте местами внутреннее соединение на левое соединение.