如何在CDbCriteria Yii Framework中编写复杂的JOIN查询

J.K*_*.A. 2 php sql yii

我有两个表:product并且document两者都与document_id有关系.

现在我想product_id使用Yii CDbCriteria从数据库中获取文档名称.

喜欢 :

SELECT d.* 
FROM `document` As d, `product_document` AS p 
WHERE d.document_id=p.document_id
AND
p.product_id=133;
Run Code Online (Sandbox Code Playgroud)

我想写相同的查询,但使用CDbCriteria.我已经尝试过,但我的语法很难受.

aco*_*com 5

哈利有正确的语法.如果您想在整个应用程序中使其更清晰且可重复使用,请考虑使用命名范围:

/* scope in your Document model */
public function forProductId($id) {
    $criteria = new CDbCriteria();
    $criteria->condition = 'product.id = :productId',
    $criteria->with = 'product';
    $criteria->params = array(
        ':productId' => (int)$id,
    );
    return $this->dbCriteria()->mergeWith($criteria);
}
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,使您的设置更具可重用性......