我在模型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粉3739908572024-01-11 09:04:01
您似乎兩次呼叫了$singleUser->getRating()
。
您可以嘗試將結果保存在一個變數中,這樣您就不會兩次呼叫資料庫。
例如:
$rating = $singleUser->getRating();
現在可以直接使用該變數的值。這樣可以避免再次存取資料庫。
!is_null($rating) echo $rating['rate']