public static function sendInBestPhotoPhotoWeek() { Yii::$app->db->createCommand("DELETE FROM best_photo WHERE type = 2")->execute(); $bestPhotos = Photo::identifyBestPhotoDay(); $users_id = []; $sql = "INSERT INTO best_photo (id_photo, type, id_level_1, id_level_2) VALUES "; $cnt = count($bestPhotos); for ($i = 0; $i < $cnt; ++$i) { $users_id[$bestPhotos[$i]['id_author']]++; $sql .= " (" . $bestPhotos[$i]['id'] . ", 2, " . $bestPhotos[$i]['id_level_1'] . ", " . $bestPhotos[$i]['id_level_2'] . ")"; if ($i < $cnt - 1) { $sql .= ', '; } } \Yii::$app->db->createCommand($sql)->execute(); $photoIds = []; foreach ($bestPhotos as $photo) { $photoIds[] = $photo['id']; } $ids = implode(', ', $photoIds); $users = (new Query())->select('u.id')->from('user u')->innerJoin('photos p', 'p.id_author=u.id')->where(['u.id' => $photoIds])->all(); $user_t = []; foreach ($users as $user) { $user_t[$user['id']]++; } Yii::$app->db->createCommand("UPDATE photos SET r_week=0 WHERE 1")->execute(); $sql = ""; foreach ($users_id as $k => $v) { $r = self::PHOTO_WEEK * $v; $sql .= "UPDATE user SET photo_week=photo_week+{$v}, rating=rating+{$r} WHERE id={$k};"; } Yii::$app->db->createCommand($sql)->execute(); }