Nano Hash - криптовалюты, майнинг, программирование

как написать подзапрос в доктрине symfony

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

Я попытался:-

$qb = $this->createQueryBuilder('contact');
$qb2=$qb;
$sub_query = $qb2->select('field')
    ->from('OtherTable','g')
    ->where("'id= '".$personId."'")
    ->OrderBy('updated_at', 'DESC')
    ->setMaxResults(1)
    ->getQuery()
    ->getResult();

$qb->select("contact.id, 
                contact.title, 
                count (distinct person.id) as 
number_of_contacts_with_email',(".$sub_query.") as status")
 ->leftjoin('contact.people', 'person')
 ->leftJoin('person.jobs', 'jobs')
 ->groupBy('contact.id, contact.title');


$query=$qb->getQuery();
$result = $qb->getQuery()->getArrayResult();
return $result;

Я получаю эту ошибку при выполнении запроса.

  [Semantical Error] line 0, col 59 near 'OtherTable g': Error: Class 'OtherTable' is not defined.

Как написать этот подзапрос здесь? Есть ли какое-нибудь решение для этого?


  • Возможный дубликат Выполнение подзапроса WHERE .. IN в Doctrine 2 30.07.2019
  • Все еще не решено, я получаю ошибки! класс не определен! 30.07.2019
  • Таблица сущностей OtherTable существует? 30.07.2019
  • Сущность Othertable существует, но эта сущность не выполняется должным образом в моем запросе, я уже включил $injected сущность в репозиторий. 30.07.2019
  • как написать весь запрос в nativequery, у меня не работает nativequery! 31.07.2019

Ответы:


1

Вы должны просто использовать DQL подзапроса, например:

// Don't take the query/result instances
$sub_query = $qb2->select('field')
    ->from('OtherTable','g')
    ->where("'id= '".$personId."'")
    ->OrderBy('updated_at', 'DESC')
    ->setMaxResults(1);

и использовать

$qb->select("contact.id, 
                contact.title, 
                count (distinct person.id) as 
number_of_contacts_with_email',(".$sub_query->getDQL().") as status")
 ->leftjoin('contact.people', 'person')
 ->leftJoin('person.jobs', 'jobs')
 ->groupBy('contact.id, contact.title');

Надеюсь, это поможет

30.07.2019
  • Привет @Matteo Спасибо за ответ, я попробовал ваше решение, но все еще получаю эту ошибку: - [Семантическая ошибка] строка 0, столбец 220 рядом с «OtherTable g WHERE»: Ошибка: класс «OtherTable» не определен. 30.07.2019
  • Проблема, которую я обнаружил, заключается в том, что мы не можем запускать подзапрос с ограничениями в доктрине. Есть ли другое решение для этого? тоже проверяю! 31.07.2019
  • github.com/doctrine/orm/issues/3979 поэтому я думаю, что мне нужно написать все запросы в SQL, кроме DQL, для моего требования: (пожалуйста, поправьте меня, если я ошибаюсь! 31.07.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..