2012-01-20 2 views
0

으로 쿼리를 재현 할 수없는 나는이 SQL 쿼리가 있습니다교리 1.2 : Doctrine_Query

select * 
from tblapplicant AS a 
WHERE a.napplicantid 
not in (
select napplicantid 
from tblcontract 
where dstart BETWEEN '2011-10-27' AND '2012-01-26' 
OR dend BETWEEN '2011-10-27' AND '2012-01-26') 

을 그리고 교리 1.2에서이 쿼리를 구축하려는 :

$Query = Doctrine_Query::create() 
        ->select('a') 
        ->from('tblapplicant a') 
        ->innerJoin('a.tblintermediair i') 
        ->where('i.nintermediairid = ? ', $intermediairid) 
        ->addWhere('a.napplicantid NOT IN (select c.napplicantid from tblcontract c WHERE c.dstart BETWEEN ? AND ? OR c.dend BETWEEN ? AND ?)', array($this->tbljobavailable->getFirst()->dday, $this->tbljobavailable->getLast()->dday, $this->tbljobavailable->getFirst()->dday, $this->tbljobavailable->getLast()->dday)); 

을하지만, 어떻게 든 불평 유지 : 클래스 C를 찾을 수 없습니다

아이디어가 있습니까?

답변

0

며칠 전에이 문제가 발생했습니다.

가능한 솔루션 중 하나는 tblapplicant 테이블 자체에 대해 1 대 1 관계를 추가하는 것입니다. 나는 이것을 좋아하지 않았기 때문에 제외를위한 ID를 얻기 위해 추가 쿼리를 만들었습니다. 귀하의 경우에는 다음과 같이됩니다 :

$notIn = Doctrine_Query::create()->(put your subselect query here)->execute(array(), Doctrine_Core::HYDRATE_SINGLE_SCALAR); 

$Query = Doctrine_Query::create() 
       ->select('a') 
       ->from('tblapplicant a') 
       ->innerJoin('a.tblintermediair i') 
       ->where('i.nintermediairid = ? ', $intermediairid) 
       ->whereNotIn('a.napplicantid', $notIn);