如何確保我的方法只執行一次?
P粉198814372
P粉198814372 2024-01-10 17:47:23
0
1
380

我在模型Users中有一個方法

    public function getRating()
    {
        $id = \Yii::$app->request->get('id');
        $rating = Yii::$app->db->createCommand(
            "SELECT * FROM (
            SELECT *, (@position:=@position+1) as rate FROM (
                SELECT executor_id, SUM(rate) / COUNT(rate) as pts                                                            FROM user_replies, (SELECT @position:=0) as a                                  
                GROUP BY executor_id ORDER BY pts DESC
                ) AS subselect
           ) as general WHERE  executor_id = $id"
        )->queryOne();

        return $rating;
    }

並且我在視圖中輸出結果如下

getRating()['rate']; ?>

但是更有經驗的開發者告訴我,我的查詢會執行兩次。有可能重寫程式碼以使其只執行一次嗎?

P粉198814372
P粉198814372

全部回覆(1)
P粉373990857

您似乎兩次呼叫了$singleUser->getRating()。 您可以嘗試將結果保存在一個變數中,這樣您就不會兩次呼叫資料庫。 例如:

$rating = $singleUser->getRating();

現在可以直接使用該變數的值。這樣可以避免再次存取資料庫。

!is_null($rating)
echo $rating['rate']
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板