Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah saya boleh memastikan bahawa kaedah saya hanya dilaksanakan sekali?

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粉198814372P粉198814372257 hari yang lalu329

membalas semua(1)saya akan balas

  • P粉373990857

    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']

    balas
    0
  • Batalbalas