Symfony2 + Doctrine + операторы case: как сделать оператор case в DQL или другом? - PullRequest
1 голос
/ 23 января 2012

Мне нужно использовать case statements в моем конструкторе запросов ...

Мой запрос выглядит примерно так:

        $query = $this->getEntityManager('V')->createQuery(
            'SELECT  V,
                (CASE unit  WHEN "DAY"      THEN DATE_ADD( NOW() , INTERVAL start_date DAY ) 
                            WHEN "MONTH"    THEN DATE_ADD( NOW() , INTERVAL start_date MONTH )
                            WHEN "YEAR"     THEN DATE_ADD( NOW() , INTERVAL start_date YEAR ) 
                 END as startDate
                ) 
            FROM AppMyBundle:Entity V

             WHERE 1=1 
             ORDER BY date ASC'
        );

Обратите внимание, что это правильно в MySQL.

Я не знаю, как ее решить ...

Если у вас есть другая идея, не стесняйтесь мне помочь:)

Есть идеи?

1 Ответ

0 голосов
/ 09 января 2014
$query =  $this->getDoctrine()->getEntityManager()->getConnection()->prepare(
        "SELECT  V.id,
            (CASE WHEN "DAY"      THEN DATE_ADD( NOW() , INTERVAL start_date DAY ) 
                  WHEN "MONTH"    THEN DATE_ADD( NOW() , INTERVAL start_date MONTH )
                  WHEN "YEAR"     THEN DATE_ADD( NOW() , INTERVAL start_date YEAR ) 
             END as startDate
            ) 
        FROM table_name V

         WHERE V.id = :id 
         ORDER BY date ASC"
    );
 $query->bindValue('id', $id);
 $query->execute();   
 $results = $query->fetchAll(); 

Попробуйте это, я надеюсь, что это работает для вас Спасибо, Ашок Читрода

...