Bagaimanakah saya boleh memastikan bahawa kaedah saya hanya dilaksanakan sekali?
P粉198814372
P粉198814372 2024-01-10 17:47:23
0
1
385

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粉198814372
P粉198814372

membalas semua(1)
P粉373990857

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']
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan