繁体   English   中英

Yii相关模型中的STAT关系

[英]STAT Relation in Related Model in Yii

我不确定在以下情况下使用的正确逻辑。 这种情况会在我的应用程序中出现几次,我想,其他人也可能会遇到这种情况。

在Yii中,我有一个loadModel函数,该函数返回CActiveRecord。

功能如下:

$model=Product::model()->with('performance','subcategory','sponsor')->findByPk($id);

如您所见,我急切地称呼3种关系。 这些关系之一(性能)是HAS_MANY关系,与产品的用户评论有关。

因此,对于商品x,可能有100条评论的日期和分数都不同。

我正在尝试做的是:

  1. 拉取所有效果数据(因此共有100条评论)
  2. 拉取最新的效果数据得分(只要在最近120天内提交)

逻辑上的混乱就是这样。 我是否应该在我的模型类中创建一个通过$model->performance来获取最新信息的函数(#2)。

我是否应该仅为此精炼数据创建一个完全独立的关系。

CListView中的每个产品都需要此最新审阅数据,并且ListView必须可以根据此数据进行排序。 因此,似乎它需要直接附加到传递给视图的产品活动记录中。

从性能和逻辑的角度来看,我应该如何处理?

顺便说一句,这是我试图使用的当前代码无法正常工作:

public function scopes()
{
    return array(
        'recentPerf'=>array(
            'condition'=>'perf_date > ' . strtotime('-120 days', strtotime(new CDbExpression('NOW()'))),
            'order'=>'perf_date DESC',
            'limit'=>1,
        )
    );
}

预先感谢您的任何建议!

Uday的答案使示波器起作用了-现在如何正确使用示波器? 我应该在当前模型中传递此金额吗?

即我可以将此附加到:

$model=Product::model()->with('performance','subcategory','sponsor')->findByPk($id);

我如何对其进行测试以确保其有效:

$maxPerformance = ProdPerformance::model()->recentPerf()->find();

然后将该变量传递给视图。 这似乎是处理这种情况的一种非常“不清洁”的方式。 是否应该将其与原始$model变量一起传递?

我不确定,但可能以下线有问题

'condition'=>'perf_date > ' . strtotime('-120 days', strtotime(new CDbExpression('NOW()'))),

条件是将要发送到mysql的数据,因此日期字符串应为MySQL格式,而不是PHP,请尝试以下操作

'condition'=>'perf_date > CURRENT_DATE - INTERVAL 120 DAYS',

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM