我正在寻找使用 YII 框架正确提取相关产品的数据,因为我只学习这个框架我想知道你有没有关于我应该如何去做的建议。
我接手了一个使用 YII 的项目,它似乎已经有了一些功能,但我不知道如何使用它。
这是我当前的代码...
在我的产品模型中,我自己写了这个..
public function getRelatedProducts($id)
{
$rawData=Yii::app()->db->createCommand('SELECT * FROM '.Product::model()->tableName().' as Product LEFT JOIN '.ProductRelated::model()->tableName().' as ProductRelated ON ProductRelated.related_id=Product.id LEFT JOIN '.Images::model()->tableName().' as image ON Product.image_id=image.id WHERE ProductRelated.product_id='.$id.' ')->queryAll();
return $rawData;
}
我使用...获取这些数据
$related_products = Product::GetRelatedProducts($model->id);
这可行,但不使用 YII 框架。
我注意到有一个名为 ProductRelated 的模型(其中没有多少)。但我不知道如何使用它。
这显然是指我在数据库中名为 的表product_related
,它有 2 个字段,product_id
并且related_id
,其中related_id
表示它被分配(相关)的产品的 id。
我想使用这个类,因为它显然是考虑到这一点而编写的。现在我只是跳过它。
class ProductRelated extends BaseProductRelated {
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public static function LoadByProductIdRelatedId($intProductId , $intRelatedId)
{
return ProductRelated::model()->findByAttributes(array('product_id'=>$intProductId,'related_id'=>$intRelatedId));
}
}
在阅读了更多关于 YII 的信息后,我重新构建了我的查询......
public function getRelatedProducts($id)
{
$criteria = new CDbCriteria();
$criteria->alias = 'Product';
$criteria->join ='LEFT JOIN '.ProductRelated::model()->tableName().' as ProductRelated ON ProductRelated.related_id=Product.id';
$criteria->join .=' LEFT JOIN '.Images::model()->tableName().' as image ON Product.image_id=image.id';
$criteria->condition = 'ProductRelated.product_id='.$id.'';
$criteria->order = 'Product.id DESC';
return $criteria;
}
但是,我不确定如何处理最后一段代码以及如何将其与上面显示的模型链接起来。