簡體   English   中英

Doctrine 1.2:無法使用Doctrine_Query重現查詢

[英]Doctrine 1.2: Can't reproduce query with Doctrine_Query

我有這個SQL查詢:

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')

我想在Doctrine 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類

有任何想法嗎?

幾天前剛遇到這個問題。

一種可能的解決方案是為tblapplicant表本身添加一對一關系。 我不喜歡這個,所以創建了額外的查詢來獲取要排除的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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM