2011-02-13 85 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

已解決問題。 – 2011-02-13 12:30:12

回答

13

你居然着完全寫,因爲你必須將標準適用於ActiveRecord模型來獲得主表,但假設你有一個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; 

應該給你一個相當不錯的主意如何開始......