Хобрук: Ваш путь к мастерству в программировании

Symfony + доктрина: выберите пункт, где не работает

Пункт, в котором не работает простой тип массива. Условие: cc.isActive = :active.

return $qb->select('c')
        ->from('Win4uAdminBundle:ColorGammeCor', 'c')
        ->innerJoin('Win4uAdminBundle:Color', 'cc')
        ->where('c.type = :type')
        ->andWhere('cc.isActive = :active ')
        ->andWhere('c.gamme = :gamme_id')
        ->addGroupBy('c.colorExt')
        ->setParameter('type', $type)
        ->setParameter('active', 1)
        ->setParameter('gamme_id', $gammeId)
        ->getQuery()->getResult();

Вот поданное определение:

/**
 * @ORM\Column(name="is_active", type="simple_array", columnDefinition="TINYINT(1) NULL")
 */
private $isActive;

Если содержимое поля is_active равно null, этот запрос возвращает записи... почему? Прошу только is_active=1

Большое спасибо


  • Вы пытались отладить исполняемый запрос из Symfony Profiler? Я не знаю, почему вы используете тип simple_array вместо логического. 27.11.2014

Ответы:


1

Вы всегда можете отладить фактический вызов SQL Doctrine, выполнив $qb->getQuery()->getSQL(), где $qb — ваш объект QueryBuilder, или взглянув на панель инструментов Symfony.

Есть две проблемы с кодом. Во-первых, определение поля $isActive неверно, оно должно быть логическим, а не простым_массивом:

/**
 * @ORM\Column(name="is_active", type="boolean")
 */
private $isActive;

Во-вторых, innerJoin должен указать отношение к Win4uAdminBundle:ColorGammeCor, поэтому оно должно быть примерно таким:

return $qb->select('c')
    ->from('Win4uAdminBundle:ColorGammeCor', 'c')
    ->innerJoin('c.color', 'cc')
27.11.2014
  • Здравствуйте, исправление моего внутреннего соединения и отладка с помощью -›getSQL() помогли мне решить мою проблему. Большое спасибо. Также использование isActive в качестве простого массива помогает мне использовать его в качестве флажка. Может быть ошибка новичка в symfony... Так что спасибо, ребята 28.11.2014
  • Новые материалы

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..