2011-02-28 71 views
0

如何將我的查詢轉換爲Yii framewor的加入活動記錄? 我很難轉換這個東西。如何將其轉換爲加入AR

 $conn = Yii::app()->db; 
     $sql = "SELECT * FROM wswebproducts JOIN category_products ON 
     category_products.ProductID = wswebproducts.ProductID 
     WHERE category_products.catid = :cid"; 
     $sql = $conn->createCommand($sql); 
     $sql->bindValue(':cid',Yii::app()->request->getQuery('cid')); 

     $row = $sql->queryAll(); 

回答

0

你應該定義category_products relation在wswebproducts model,按ProductID對加盟。

public function relations() 
{ 
    return array(
    'category_products' => array(self::MANY_MANY, 'Product', 'category_products(catid, ProductID)'), 
   ); 
} 

退房the manual,它的真棒:-)

+0

其實我真正的問題是,如何加載查詢中CActiveDataProvider? :S ... – sasori 2011-02-28 09:43:24

0

這是你想要什麼,不工作?

$dataProvider=new CActiveDataProvider('wswebproducts', array(
    'criteria'=>array(
     'condition'=>'category_products.catid = :cid', 
     'with'=>array('category_products'), 
     'params'=>array(':cid'=>Yii::app()->request->getQuery('cid')), 
    ), 
    'pagination'=>array(
     'pageSize'=>20, 
    ), 
)); 

參考這個http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider

+0

我得到這個錯誤= CDbCommand未能執行SQL語句:SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'category_products.catid'.. wswebproducts表沒有一個catid列,如果你檢查我的第一篇文章,我通過他們的ProductID列加入了wswebproducts和category_products,而catid列只存在於category_products表中,其中它通過getQuery('cid')填充 – sasori 2011-03-01 01:53:32

+0

您可以嘗試使用catid而不是category_products.catid。另外,請確保您的表'category_products'內有catid,'category_products'模型存在,並且在頂級評論區域中將catid列爲category_products模型文件中的「@property integer $ catid」 – Shekhar 2011-03-01 10:47:31