2011-02-13 48 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; 

应该给你一个相当不错的主意如何开始......