public function update()
 {
     if ($this->provinceId == "" || $this->majorJobId == "") {
         CommonFunctions::createAlertMessage("省份或者专业类型不能为空", "error");
         return false;
     }
     $user = Yii::$app->session->get('user');
     $majorJob = MajorJob::findOne($this->majorJobId);
     if ($this->provinceId != $majorJob['provinceId']) {
         CommonFunctions::createAlertMessage("专业类型与所处省份不一致,请重新选择", "error");
         return false;
     }
     //修改省份或专业岗位,需要清除用户的在线练习相关信息
     if ($this->provinceId != $user['provinceId'] || $this->majorJobId != $user['majorJobId']) {
         CurrentTestLibrary::deleteAll(['userId' => $user['userId']]);
         //删除当前记录
         ErrorQuestion::deleteAll(['userId' => $user['userId']]);
         //删除错题记录
         Collection::deleteAll(['userId' => $user['userId']]);
         //删除收藏
     }
     /** @var $user \common\models\Users */
     $user = Users::findOne($user['userId']);
     $user->nickname = $this->nickname;
     $user->realname = $this->realname;
     $user->provinceId = $this->provinceId;
     $user->majorJobId = $this->majorJobId;
     $user->company = $this->company;
     $user->address = $this->address;
     if (!$user->save()) {
         throw new Exception("UpdateInfoForm update Save Error");
     }
     Yii::$app->session->set('user', $user);
     return true;
 }
 /**
  * 错题练习
  * @return string
  */
 public function actionWrongTest()
 {
     $session = Yii::$app->session;
     $user = $session->get('user');
     $testLibraries = ErrorQuestion::findAllByUserWithTestLibrary($user['userId']);
     $countNumber = count($testLibraries);
     if ($countNumber == 0) {
         //避免没有题目生成出题页面出错
         $url = Url::to(['site/test-library-wrong-zero']);
         header("Location:{$url}");
         exit;
     }
     //将一些必要参数存入session,方便后续页面调用
     $session->set('testLibraries', $testLibraries);
     //所有题目
     $session->set('totalNumber', $countNumber);
     //总题数
     $session->set('testTitle', "错题练习");
     //测试标题
     $session->set('majorJob', $user['nickname']);
     //测试岗位使用用户昵称
     $session->set('testType', 6);
     //测试类型,6表示错题练习
     //取出特定的题目量
     $defaultOnceNumber = Yii::$app->params['defaultOnceNumber'];
     $testLibraries = array_slice($testLibraries, 0, $defaultOnceNumber);
     return $this->render('test', ['testLibraries' => $testLibraries, 'startNumber' => 0, 'currentNumber' => 0]);
 }
 public static function findAllByUserWithTestLibrary($userId)
 {
     $table_a = ErrorQuestion::tableName();
     $table_b = TestLibrary::tableName();
     return (new \yii\db\Query())->from([$table_a, $table_b])->where(["{$table_a}.userId" => $userId])->andWhere("{$table_b}.testLibraryId = {$table_a}.testLibraryId")->orderBy(["{$table_a}.createDate" => SORT_DESC])->all();
 }