Я пытаюсь преобразовать следующий запрос 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);