LLLit: Изучение и практика программирования

Дважды присоединиться к Symfony2 с Doctrine (синтаксическая ошибка)

У меня есть таблицы:

Car(Auto) ->(1:N) Rent (N:1) <- Department(Abteilung)

Я хочу соединить их внутренним соединением. В аренде указаны ID отдела и автомобиля.

Если я делаю соединение дважды, я получаю сообщение об ошибке. С одним соединением все работает. Это почему? Как я могу это исправить?

$result = $this->getDoctrine()->getRepository('ChrisKfzBuchungBundle:Rent')
            ->createQueryBuilder('r')
            ->innerJoin('ChrisKfzBuchungBundle:Rent','ChrisKfzBuchungBundle:Auto')
            ->innerJoin('ChrisKfzBuchungBundle:Rent','ChrisKfzBuchungBundle:Abteilung')
            ->where('r.mieteStart >= :date_from')
            ->andWhere('r.mieteEnde <= :date_to')
            ->setParameter('date_from', $date_from)
            ->setParameter('date_to', $date_to)
            ->distinct()
            ->getQuery()->getArrayResult();

[Синтаксическая ошибка] строка 0, столбец 129: ошибка: ожидаемый литерал, получено «JOIN»

Спасибо!


  • Попробуйте сделать соединение следующим образом: ->innerJoin('r.auto', 'auto) и ->innerJoin('r.abteilung', 'abteilung) 18.12.2014
  • Тогда нет синтаксической ошибки, но я не получаю результата для таблицы "abteilung" 18.12.2014
  • это потому, что вы выбираете только 'r' в ->createQueryBuilder('r') 18.12.2014
  • я тестирую его без соединений, соединения бесполезны, они не дают больше данных, чем без них. что это? 18.12.2014
  • Конечно, в вашем случае соединения ничего не делают, потому что вы не извлекаете данные из них. В вашем запросе вы только selection Rents where date is between. Ничего больше. 18.12.2014
  • Какую информацию вы хотите получить? 18.12.2014

Ответы:


1

Это работает, спасибо manix за помощь. Пришлось исправлять соединения и использовать addSelect (неизвестная мне команда).

 $result = $this->getDoctrine()->getRepository('ChrisKfzBuchungBundle:Rent')
            ->createQueryBuilder('r')
            ->addSelect('abteilung')
            ->addSelect('auto')
            ->join('r.auto','auto')
            ->join('r.abteilung','abteilung')
            ->where('r.mieteStart >= :date_from')
            ->andWhere('r.mieteEnde <= :date_to')
            ->setParameter('date_from', $date_from)
            ->setParameter('date_to', $date_to)
            ->distinct()
            ->getQuery()->getArrayResult();
18.12.2014
Новые материалы

CS373 Summer 2018: Миранда Фуленчек
CS373 Summer 2018: Миранда Фуленчек Неделя 1: 4 июня — 10 июня Что вы делали на прошлой неделе? Занятия начались на этой неделе, поэтому большую часть времени я потратил на..

Как развивается смешанно-целочисленное программирование, часть 7
Унифицированная техника раннего завершения для первично-двойственных алгоритмов в смешанно-целочисленном коническом программировании (arXiv) Автор : Ювэнь Чэнь , Кэтрин Нин , Поль Гулар..

Как научить модель Keras распознавать текст переменной длины
Я некоторое время играл с официальным примером Keras image_ocr.py и хочу поделиться своими выводами в этом посте. В официальном примере выполняется только обучение модели, но отсутствует..

Практическая пакетная нормализация
История начинается после использования инициализации He вместе с ELU (или любым вариантом ReLU) может значительно снизить опасность проблем с исчезающими/взрывающимися градиентами в начале..

Поэзия онлайн-кодирования: путешествие пикселей и страсти
В мире, наполненном инновациями, онлайн-обучение программированию становится холстом, на котором обретает форму полотно вашей мечты. Это больше, чем просто создание строк кода; это сродни..

Обработка изображений с помощью Python - размытие и повышение резкости для начинающих
Как применить ядра свертки к цветным изображениям? В этой статье мы обсудим, как применять ядра размытия и повышения резкости к изображениям. Эти базовые ядра составляют основу многих более..

Ограничение скорости в .NET Core 7 Web API
Что такое ограничение скорости? Ограничение скорости — это процесс, используемый для ограничения количества запросов, разрешенных для определенного ресурса в указанном временном окне. .NET..