2016-06-14 14 views
0

実際に私はいくつかの列を持つテーブルを持っていますが、私はいくつかの列をフィルタリングする必要があり、これらの3 i`llの必要性:私は生のSQLでこれをやったSELECT CASE - ドクトリン+ symfonyの3

id | tipodemonstrativo | anoreferencia 
---+-------------------+-------------- 
01 | AN    | 2015 
02 | AN    | 2016 
03 | SE    | 2014 
04 | PB    | 2015 

SELECT anoreferencia, 
    CASE tipodemonstrativo 
     WHEN 'PB' THEN CONCAT(anoreferencia, '-03-31') 
     WHEN 'SE' THEN CONCAT(anoreferencia, '-06-30') 
     WHEN 'SB' THEN CONCAT(anoreferencia, '-09-30') 
     WHEN 'AN' THEN CONCAT(anoreferencia, '-12-31') 
    END AS referencia 
FROM demonstrativofinanceiro 
ORDER BY referencia DESC 
LIMIT 4 

それは、この何かのリンクを結果:

id | referencia 
---+------------ 
01 | 2015-12-31 
02 | 2016-12-31 
03 | 2014-06-30 
04 | 2015-03-31 

I`mしかし、誰succeと、DQLのアプローチと同じ結果に到達しようss。私は生のSQLでこれをやったが、配列を与える:

$em = $this->getDoctrine()->getManager(); 
    $query = "SELECT *, 
     CASE tipodemonstrativo 
      WHEN 'PB' THEN CONCAT(anoreferencia, '-03-31') 
      WHEN 'SE' THEN CONCAT(anoreferencia, '-06-30') 
      WHEN 'SB' THEN CONCAT(anoreferencia, '-09-30') 
      WHEN 'AN' THEN CONCAT(anoreferencia, '-12-31') 
     END AS referencia 
    FROM demonstrativofinanceiro 
    ORDER BY referencia DESC 
    LIMIT 4"; 

    $stmt = $em->getConnection()->prepare($query); 
    $stmt->execute(); 
    $result = $stmt->fetchAll(); 

しかし、この結果配列に、そしてすべての私の見解は、準備ができて、オブジェクトだった...私は、 `私は、配列を照会する場合は、ページの多くを変更する必要があります。

誰かがこれを手伝ってくれますか?ありがとう!! Symfony2ので

答えて

0

役に立つことを願っています

$stmt = $em->getConnection(); 
$result = $stmt->executeQuery($query)->fetchAll(); 

として働い:喜ば

$query = $em->createQuery("SELECT *, 
     CASE tipodemonstrativo 
      WHEN 'PB' THEN CONCAT(anoreferencia, '-03-31') 
      WHEN 'SE' THEN CONCAT(anoreferencia, '-06-30') 
      WHEN 'SB' THEN CONCAT(anoreferencia, '-09-30') 
      WHEN 'AN' THEN CONCAT(anoreferencia, '-12-31') 
     END AS referencia 
    FROM demonstrativofinanceiro 
    ORDER BY referencia DESC 
    LIMIT 4"); 
$result = $query->getResult(); 

してみてください。

+0

うまく働いています! –

0

それは私がそれをすべきではない、それは

+0

ありがとうございますが、私はRAW SQLを使ってDQLでそれを行う必要があります...しかし、私はプロジェクトの多くのページを変更する必要があります... –

関連する問題