Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii正确使用/理解模型_Php_Yii - Fatal编程技术网

Php yii正确使用/理解模型

Php yii正确使用/理解模型,php,yii,Php,Yii,我希望通过YII框架正确获取相关产品的数据,因为我只是学习这个框架,我想知道你对我应该如何做有什么建议 我接管了一个使用YII的项目,它似乎已经有了一些功能,但我不知道如何利用它 这是我当前的代码 在我的产品模型中,这是我自己写的 public function getRelatedProducts($id) { $rawData=Yii::app()->db->createCommand('SELECT * FROM '.Product::model()->table

我希望通过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的表,它有两个字段,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;

}   

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

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

阅读有关yii关系活动记录的信息:

Best问候

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

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


注:我猜relatedProduct表是一个关联表,表示产品和。。。产品,所以你会使用很多。查看relations方法文档末尾的示例代码

我应该澄清一下,我也写了第一个查询。但谢谢,我来看看。您可能想添加更多关于产品相关模型的信息,以便我们可以为您提供帮助。字段/您希望将查询与该模型关联的原因。谢谢,我编辑了这篇文章,并在ProductRelated模型之前添加了更多信息。查看基本模型BaseProductRelated将非常有用。