2013-08-24 3 views
13

임 MySQL과 Laravel 4를 사용하고 DB에 레코드가 삽입, 업데이트 또는 삭제 될 때 가능한 오류를 제어하는 ​​방법을 알고 싶습니다. 예를 들어 다음과 같이 업데이트를 수행하는 경우 :Laravel 4에서 쿼리가 실패하는지 확인하는 방법은 무엇입니까?

DB::table('user')->where('id', $id)->update($userdata); 

쿼리가 실패한 경우 어떻게 알 수 있습니까? 나는 try-catch 블록을 사용하여 예외를 잡아서 처리하겠다고 생각했지만 Laravel 특정 메서드가 있는지 여부를 알고 싶습니다.

+1

쿼리가 실패하면 PDOException이 발생합니다. 너는 그것을 잡을 수있다. –

+1

@RubensMariuzzo, 정말로. Laravel [https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Connection.php#L528] 대신에 보통의 'Exception'을 던집니다. – rmobis

+0

@Raphael_, 맞아, 고마워, 고마워. –

답변

33

try catch 블록에 넣습니다. 또한

try { 

    DB::table('user')->where('id', $id)->update($userdata); 
}catch(\Exception $e){ 
    //Do something when query fails. 
} 

,

DB::insert() 반환 부울.

DB::update() 반환

DB::delete() 반환

DB::insertGetId() 반환 마지막으로 삽입 된 ID 부울 부울입니다.

값에 따라 후속 코드를 작성할 수 있습니다.

P. 위의 내용은 오류가 아니며 쿼리 이 영향을 받았는지 여부를 확인하기위한 것입니다. 일부 행이 아니거나 아닙니다.

+1

감사합니다. 예, try-catch를 사용하는 것이 좋지만 Laravel이 직접적인 방법을 제공하는지 확인하고 싶습니다. Althoug 만약 그 행이 나를 위해 충분하다면 그 메쏘드가 boolean 값을 반환하는지. – Darwing

+0

'catch' 블록에'return false'가 있습니다. 그게 내가 부울로 만든 방법이야) – itachi

+0

@Rubens가 질문에 댓글을 달았 기 때문에 우리는 PDOException을 잡을 수 있습니까? – sangam

관련 문제