2012-05-24 2 views
0

심포니 교리 하위 쿼리와 쿼리를 만드는 방법 :나는 교리에서이 SQL 쿼리 만들고 싶어

SELECT * 
FROM (
    (SELECT *, e1.stop_date as sort_date FROM `event` e1 WHERE ...) 
    UNION 
    (SELECT *, e2.start_date as sort_date FROM `event` e2 WHERE ...) 
) e3 
ORDER BY e3.sort_date 

을 내가 사용하는 것과 같이, 이벤트 테이블에 연결 심포니 모델의 결과를하려는 :

Doctrine_Core::getTable('Event')->createQuery('e') 

아이디어가 있으십니까? 양자 택일로, 당신은 당신의 데이터베이스에서보기를 작성하고 간단한 교리 쿼리에 소스 테이블로 사용할 수 있습니다,

$q = Doctrine_Query::create() 
     ->select('u.id') 
     ->from('User u') 
     ->where('u.id NOT IN (SELECT u2.id FROM User u2 INNER JOIN u2.Groups g)'); 

echo $q->getSqlQuery(); 

http://doctrine.readthedocs.org/en/latest/en/manual/dql-doctrine-query-language.html#subqueries

을 또는 :

답변

5

당신은 복잡한 쿼리에 대한 교리의 DQL의 languaje을 시도 할 수 있습니다.

CREATE VIEW view_name AS 
SELECT * 
FROM (
    (SELECT *, e1.stop_date as sort_date FROM `event` e1 WHERE ...) 
    UNION 
    (SELECT *, e2.start_date as sort_date FROM `event` e2 WHERE ...) 
) e3 
ORDER BY e3.sort_date 

내가 내 프로젝트에 모두 approachs을 사용하고 잘 작동했다, 그것은 등 당신이 뷰를 생성 할 수있는 경우, 업데이트해야 할 경우, 데이터에 액세스하는 방식,

+1

일에 따라 달라집니다 보기 – j0k

관련 문제