2011-02-13 2 views
6

어떻게 쿼리를 작성할 수 있습니다Yii CDbCriteria 가입

SELECT * 
    FROM doc_docs dd 
    JOIN doc_access da 
    ON dd.id=da.doc_id 
    AND da.user_id=7 

CDbCriteria 구문?

+0

문제가 해결되었습니다. –

+0

아마도 해결책을 공유 할 것입니까? 아니면 올바른 해결책이 있다면 대답을 받아들입니까? – zapadlo

+0

다른 사람들을 돕기 위해 답을 공유해야합니다. !!! – ASD

답변

13
당신은 실제로 캔트 완전히 당신이 기본 테이블을 얻기 위해 액티브 모델에 기준을 적용해야하지만, 당신이 DocDocs 모델을 가정하기 때문에이처럼 할 수있는 쓰기

: 그것은 비록

$oDBC = new CDbCriteria(); 
$oDBC->join = 'LEFT JOIN doc_access a ON t.id = a.doc_id and a.user_id = 7'; 

$aRecords = DocDocs::model()->findAll($oDBC); 

당신은 모델에게 DocDocs에게 doc_access와의 관계를 주면 훨씬 쉬울 수 있습니다, 당신은 dbcriteria를 사용할 필요가 없습니다 :

class DocDocs extends CActiveRecord 
{ 
    ... 

    public function relations() 
    { 
     return array('access' => array(self::HAS_MANY, 'DocAccess', 'doc_id'); 
    } 

    ... 
} 

$oDocDocs = new DocDocs; 
$oDocDocs->id = 7; 
$aRecords = $oDocDocs->access; 

... 당신에게 어떻게 시작하는 상당히 좋은 아이디어를 줄 것이다