簡體   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