/** * 赋予经验值 * @param $intExp * @return bool */ public function appendExp($intExp) { // 取得用户数据实例 $objPlayerData = PlayerData::find($this->id); // 总计经验值取得 $intTotalExp = $objPlayerData->exp + $intExp; // 新等级检索 TODO Index $objNewLevel = PlayerLevel::where('exp', '<=', $intTotalExp)->orderBy('level', 'DESC')->first(); // 经验值赋予 $objPlayerData->exp = $intTotalExp; // 是否升级 $isLevelUp = false; // 是否升级 if ($objNewLevel->level > $objPlayerData->level) { $objPlayerData->level = $objNewLevel->level; $isLevelUp = $objPlayerData->level; } // 保存 TODO Transaction if ($objPlayerData->save()) { return $isLevelUp; } else { return false; } }