Итак, у меня есть вопрос, который я исследовал и исследовал, как заставить это работать, и для жизни я не могу! ... возможно, я просто делаю это неправильно, и я нашел минимальную информацию.
У меня есть таблица с именем timeclock setup..., в которой есть поле: noteBy_id, которое является идентификатором пользователя, которому принадлежит запись...
Что мне нужно сделать сейчас, так это управленческая сторона вещей в системе. Я ожидаю, что более 1 компании будут использовать эту систему часов, и поэтому мне нужно отфильтровать результаты на основе идентификатора компании. В пользовательской таблице , у меня есть поле с именем parentcompany_id
Итак, давайте посмотрим, смогу ли я выразить словами то, что мне нужно сделать.
Мне нужно выбрать * из timeclock и оставить соединение user.parentcompany_id, где timeclock.daydate ‹ :start и где u.parentcompany = :pid
где начало: `date('Y-m-d 00:00:00');
Я настроил этот запрос:
$em = $this->getDoctrine()->getEntityManager();
$start = date('Y-m-d 00:00:00');
$qb = $em->getRepository('EcsCrmBundle:TimeClock');
$qb = $qb->createQueryBuilder('t');
$query = $qb->select('t, u.parentcompany_id')
->from('timeclock', 't')
->leftJoin('Ecs\AgentManagerBundle\Entity\User', 'u', 'ON' 'u.id = t.noteBy_id AND u.parentcompany_id = :pid')
->where('t.daydate < :start')
->andWhere("t.noteBy_id != ''")
->setParameter('start', $start)
->setParameter('pid', $user->getParentcompany())
->getQuery();
$entities = $query->getArrayResult();
Я смотрел и смотрел и не могу найти решение ошибки, которую я получаю:
An exception has been thrown during the rendering of a template ("[Semantical Error] line 0, col 112 near 'u ON u.id = t.noteBy_id': Error: Identification Variable Ecs\AgentManagerBundle\Entity\User used in join path expression but was not defined before.") in EcsCrmBundle:TimeClock:manager.html.twig at line 5.
и запрос, который получает вывод:
SELECT t, u.parentcompany_id FROM Ecs\CrmBundle\Entity\TimeClock t LEFT JOIN Ecs\AgentManagerBundle\Entity\User u ON u.id = t.noteBy_id AND u.parentcompany_id = :pid, timeclock t LEFT JOIN Ecs\AgentManagerBundle\Entity\User u ON u.id = t.noteBy_id AND u.parentcompany_id = :pid WHERE t.daydate < :start AND t.noteBy_id != ''
который при нормальных обстоятельствах работал бы идеально... но в данном случае он просто не работает... Есть идеи?