1

我正在寻找使用 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;

}   

但是,我不确定如何处理最后一段代码以及如何将其与上面显示的模型链接起来。

4

2 回答 2

0

Yii 模型使用ActiveRecord模式。您会发现模型的关系()方法允许您定义关系数据。

如果您的 Product.relations() 方法设置正确,那么相关产品将“神奇地”可用。

注意:我猜 relatedProduct 表是 Product 和... Product 之间的 nn 关系的关联表,因此您将使用 MANY_MANY。看一下关系()方法文档末尾的示例代码。

于 2013-10-03T09:38:22.223 回答
0

您的代码中有很多错误。我认为您的前任也不太了解 yii。包含获取关系的功能。

阅读 yii 关系活动记录:

http://www.yiiframework.com/doc/guide/1.1/en/database.arr

此致

于 2013-10-03T09:14:16.540 回答