public function updateMainMail(Request $request) { $address = $request->get('address'); if ($this->user->email === $address) { $e = new InvalidArgumentException(); $e->setMessage('기존 대표 이메일과 동일합니다.'); throw $e; } $selected = null; foreach ($this->user->emails as $mail) { if ($mail->address === $address) { $selected = $mail; break; } } // 해당회원이 가진 이메일이 아닐 경우 예외처리한다. if ($selected === null) { $e = new InvalidArgumentException(); $e->setMessage('존재하지 않는 이메일입니다.'); throw $e; } $this->user->email = $address; XeDB::beginTransaction(); try { $this->users->update($this->user); } catch (\Exception $e) { XeDB::rollback(); } XeDB::commit(); \Session::flash('alert', ['type' => 'success', 'message' => '수정되었습니다.']); return XePresenter::makeApi(['message' => '수정되었습니다']); }