Задать вопрос

СreateQuery как дать добавочное условие andWhere?

Добрый день, каким образом можно сделать добавчное условие в createQuery? Хочу приделать фильтрацию по типу аккаунта. В самом запросе пока что просто идет подхват по дате сессий. Удачной считается с 0 сообщением - поставлено специально для отладки пока что.
$sessionCountData = $this->em->createQuery("
            SELECT DATE_FORMAT(STR_TO_DATE(l.field3, '%d.%m.%Y %H:%i:%s'), '$format') as date,
                COUNT(l.id) as session_count,
                SUM(IF(l.field6 >= :min_message_count, 1, 0)) as success_session_count
            FROM Site\Models\Log l
            JOIN Site\Models\User u WITH u.id = l.field10 AND l.type = 'userGoneOffline'
            WHERE STR_TO_DATE(l.field2, '%d.%m.%Y %H:%i:%s') > :start_date AND STR_TO_DATE(l.field3, '%d.%m.%Y %H:%i:%s') <= :end_date AND u.signupDate BETWEEN :signup_from AND :signup_to
            GROUP BY date
        ");


Я это все могу перевести на queryBulder и просто использовать что-то вроде
if($form->checkedPremiumValue){
$sessionCountData->andWhere('ченить');
}


А как реализовать что то подобное на CreateQuery?
  • Вопрос задан
  • 493 просмотра
Подписаться 2 Оценить 4 комментария
Решения вопроса 1
padlyuck
@padlyuck
public function getUsers($name = null)
    {
        $em = $this->getEntityManager();
        $parameters = [':id' => 2];
        $dql = 'SELECT u from User u where u.id > :id';
        if($name){
            $dql .= ' and u.name = :name';
            $parameters[':name']=$name;
        }

        return $em
            ->createQuery($dql)
            ->setParameters($parameters)
            ->getResult();
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы