Rumah > Soal Jawab > teks badan
Saya mempunyai kaedah dalam model Pengguna
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; }
Dan saya mengeluarkan hasilnya dalam paparan seperti berikut
getRating()['rate']; ?>
Tetapi pembangun yang lebih berpengalaman memberitahu saya bahawa pertanyaan saya akan dilaksanakan dua kali. Adakah mungkin untuk menulis semula kod supaya ia hanya dilaksanakan sekali?
P粉3739908572024-01-11 09:04:01
Nampaknya awak menelefon $singleUser->getRating()
dua kali.
Anda boleh cuba menyimpan keputusan dalam pembolehubah supaya anda tidak memanggil pangkalan data dua kali.
Contohnya:
$rating = $singleUser->getRating();
Nilai pembolehubah ini kini boleh digunakan secara terus. Ini mengelakkan daripada mengakses pangkalan data sekali lagi.
!is_null($rating) echo $rating['rate']