MySQL Пользовательская переменная в Doctrine и Symfony

У меня есть следующая инструкция Doctrine, которая работает нормально.

$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); 

Мне нужно добавить количество строк в это. Теперь я знаю, что с помощью raw 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); 

Добавьте автономный запрос для установки переменной и замените внутреннее соединение на левое соединение.

Related of "MySQL Пользовательская переменная в Doctrine и Symfony"

если вы используете MySQL, и никаких переключений на другие СУБД не предвидится, возможно, вы можете попробовать

 $query = $this->createQuery('r') ->select('COUNT(u.id) as rank, 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);