2013-10-01 1 views
8

Я хочу использовать союз в доктрине, я много искал, но не получил никакого успеха, это мой запрос на объединение в sql, как преобразовать этот запрос в доктрину?Как написать запрос объединения в доктрине?

select * from (select orderid,tutorialId,points,allow_multiple,question,answer1,image1,correct1,answer2,image2,correct2,answer3,image3,correct3,answer4,image4,correct4,answer5,image5,correct5,'1' as istest,'' as content,'' as media,'' as media_type_id from tutorial_test 

union 

select orderid,tutorialId,'0' as istest,content,media,media_type_id,'' as points,'' as allow_multiple,'' as question,'' as answer1,'' as image1,'' as correct1,'' as answer2,'' as image2,'' as correct2,'' as answer3,'' as image3,'' as correct3,'' as answer4,'' as image4,'' as correct4,'' as answer5,'' as image5,'' as correct5 from tutorial_elements) a where a. tutorialId = 1 order by orderid asc 

И это одна моя доктрина запрос

$query = "SELECT * FROM(SELECT 
        tt.tutorialid 
       FROM 
        TutorialTest tt 
       UNION 
       SELECT te.tutorialid) tte 
       WHERE tte.tutorialid = 1  

    "; 
    $qb  = $this->Doctrine->createQuery($query); 
    $tutorial_test = $qb->getResult(); 

я исследовал много, но не получил никакого успеха, если кто может помочь, миллион заранее спасибо фот что.

ответ

8

Ну я нашел решение

Мы можем использовать этот запрос с RSM следующим

«Усман в основном имя таблицы и класс»

$rsm = new ResultSetMapping(); 
    $rsm->addEntityResult('Usmans', 'u'); 
    $rsm->addFieldResult('u', 'orderid', 'orderid'); 
    $rsm->addFieldResult('u', 'tutorialId', 'tutorialid'); 
    $rsm->addFieldResult('u', 'points', 'points'); 

    $query = $this->Doctrine->createNativeQuery('SELECT * FROM usman', $rsm); 
    $tutorial_tests = $query->getResult(); 

И мы можем использовать без ORM как

$testQuery = " 
    select * from (
      select orderid, 
       tutorialId, 
       points, 
       allow_multiple, 
       question, 
       answer1, 
       image1, 
       correct1, 
       answer2, 
       image2, 
       correct2, 
       answer3, 
       image3, 
       correct3, 
       answer4, 
       image4, 
       correct4, 
       answer5, 
       image5, 
       correct5, 
       '1' as istest, 
       '' as content, 
       '' as media, 
       '' as media_type_id 
      from tutorial_test 

      union 

      select orderid, 
       tutorialId, 
       '0' as istest, 
       content, 
       media, 
       media_type_id, 
       '' as points, 
       '' as allow_multiple, 
       '' as question, 
       '' as answer1, 
       '' as image1, 
       '' as correct1, 
       '' as answer2, 
       '' as image2, 
       '' as correct2, 
       '' as answer3, 
       '' as image3, 
       '' as correct3, 
       '' as answer4, 
       '' as image4, 
       '' as correct4, 
       '' as answer5, 
       '' as image5, 
       '' as correct5 
      from tutorial_elements 
     ) a 
     where a. tutorialId = $tutorial_id 
     order by orderid asc 
"; 

$resultSets = $this->Doctrine->getConnection()->fetchAll($testQuery); 
-3

Для Союза Query имеет некоторые правила

(1) Все ЗЕЬЕСТ имеет тот же тип данных и ту же ЧИСЛО столбцов

В вашем запросе на выборку имеет различный тип данных, ни столбцов не совпадают.

Итак, вы нашли Proble.

здесь решение

select orderid, tutorialId, points, allow_multiple, question, answer1, image1, correct1, answer2, image2, correct2, answer3, image3, correct3, answer4, image4, correct4, answer5, image5, correct5,'1' as istest,'' as content,'' as media,'' as media_type_id 
from tutorial_test 

union 

select orderid, tutorialId,'0' as istest, content, media, media_type_id,'' as points,'' as allow_multiple,'' as question,'' as answer1,'' as image1,'' as correct1,'' as answer2,'' as image2,'' as correct2,'' as answer3,'' as image3,'' as correct3,'' as answer4,'' as image4,'' as correct4,'' as answer5,'' as image5,'' as correct5, '1' as istest,'' as content,'' as media,'' as media_type_id 
from tutorial_elements 
where a. tutorialId = 1 
order by orderid asc 
+0

в основном мой запрос sql отлично, и это дает мне результат в sql, мой вопрос в том, как я могу написать этот запрос в синтаксисе doctrine. – usii

Смежные вопросы