2016-08-24 3 views
-3

Можете ли вы преобразовать его в DQL:Преобразование из SQL в DQL

SELECT molecule.cas, molecule.id_molecule, molecule.statutvlep8h, statutvlepct, 
     vlep8h_mg, vlepct_mg,molecule.unitevlep, prelevement.id_laboratoire 
FROM thym_dev.molecule 
INNER JOIN thym_dev.prelevement 
WHERE molecule.id_molecule = prelevement.id_molecule 

UNION ALL 

SELECT molecule.cas, molecule.id_molecule, molecule.statutvlep8h, statutvlepct, 
     vlep8h_mg, vlepct_mg,molecule.unitevlep, analyse.id_laboratoire 
FROM thym_dev.molecule 
INNER JOIN thym_dev.analyse 
WHERE molecule.id_molecule = analyse.id_molecule; 
+0

Можете ли вы опубликовать вашу попытку DQL? –

+0

В DQL нет 'UNION'. Я думаю, что Native SQL-запрос будет намного проще реализовать в Doctrine. http://doctrine-orm.readthedocs.io/en/latest/reference/native-sql.html –

+0

Просьба показать, что вы что-то пробовали. @dragoste имеет хорошее предложение. –

ответ

0

я получаю ответ:

$queryBuilder0 = " 
    SELECT molecule.molecule, molecule.cas, molecule.statutvlep8h,molecule.statutvlepct,molecule.vlep8hMg, molecule.vlepctMg,molecule.unitevlep,IDENTITY(prelevement.laboratoire) 
    FROM AppBundle:Molecule molecule 
    INNER JOIN AppBundle:Prelevement prelevement 
    WHERE prelevement.molecule= molecule.id 
    "; 

    $queryBuilder1 = " 
    SELECT molecule.molecule , molecule.cas, molecule.statutvlep8h, molecule.statutvlepct, molecule.vlep8hMg, molecule.vlepctMg,molecule.unitevlep,IDENTITY(analyse.laboratoire) 
    FROM AppBundle:Molecule molecule 
    INNER JOIN AppBundle:Analyse analyse 
    WHERE analyse.molecule= molecule.id 
    "; 

    $results = array_merge($this->_em->createQuery($queryBuilder0)->getResult(), $this->_em->createQuery($queryBuilder1)->getResult());