Нужна помощь в преобразовании MySQL-запроса в Doctrine Query - PullRequest
0 голосов
/ 06 июня 2011

Я пытаюсь преобразовать следующий запрос MySQL, который дает мне всех клиентов, у которых не было встречи в течение шести месяцев или более, в запрос DQL.

mysql> select appt.lastDate, clients.firstname, clients.lastname
-> from (select max(gapmtDate) as lastDate,gapmtClient from groomappointments group by gapmtClient) as appt ,clients
-> where date_sub(CURDATE(), INTERVAL 6 MONTH)>lastDate
-> AND clients.clientid = appt.gapmtClient;

Я пытался сопоставить это со следующим, но я получаю сообщение об ошибке, указывающее, что в предложении where есть неизвестный столбец g__0. Может кто-нибудь указать, где я иду не так

public function noappointmentsforsixmonthsAction()
{



  $sixmonths=date('y-m-d',strtotime("-6 months"));

  $q=Doctrine_Query::create()
  ->select('MAX(g.gapmtDate) AS lastDate, c.firstname, c.lastname,g.gapmtClient')
 ->from('PetManager_Model_Groomappointments g')
 ->leftJoin('g.PetManager_Model_Clients c')
 ->where('lastDate <?',$sixmonths)
 ->groupBy('g.gapmtClient');

 .......

}

EDIT

Хорошо, кажется, сайт Doctrine не работал весь день. Я попытался отредактировать запрос, описанный ниже, но он все равно не будет работать. Может ли кто-нибудь дать мне правильный синтаксис.

$q=Doctrine_Query::create()
->select('a.lastDate, c.firstname, c.lastname')
->addSelect('(SELECT MAX(gapmtDate) AS lastDate, gapmtClient FROM PetManager_Model_Groomappointments GROUP BY gapmtClient) as a')
->from('PetManager_Model_Groomappointments a')
 ->leftJoin('a.PetManager_Model_Clients c')   
 ->where('a.gapmtClient=c.clientID')
 ->andWhere('lastDate >?',$sixmonths);

1 Ответ

0 голосов
/ 06 июня 2011

Попробуйте это:

$q=Doctrine_Query::create()
  ->select('MAX(g.gapmtDate) AS lastDate, c.firstname, c.lastname, g.gapmtClient')
 ->from('PetManager_Model_Groomappointments g')
 ->leftJoin('g.PetManager_Model_Clients c')
 ->where('MAX(g.gapmtDate) < ?', $sixmonths)
 ->groupBy('g.gapmtClient');

Я надеюсь, что это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...