2013-08-24 27 views
13

Im sử dụng Laravel 4 với MySQL và tôi muốn biết cách kiểm soát các lỗi có thể xảy ra khi bản ghi được chèn, cập nhật hoặc xóa trong DB. Ví dụ: nếu tôi thực hiện cập nhật như sau:Làm thế nào để biết nếu một truy vấn thất bại trong Laravel 4?

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

Làm cách nào để biết truy vấn đó có bị lỗi không? Tôi đã nghĩ đến việc sử dụng một khối try-catch để bắt ngoại lệ và xử lý nó nhưng tôi muốn biết liệu có tồn tại một phương thức cụ thể của Laravel hay không.

+1

Khi một truy vấn thất bại một PDOException sẽ được ném. Bạn có thể bắt nó. –

+1

@RubensMariuzzo, không thực sự. Laravel [ghi đè lên nó] (https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Connection.php#L528) và ném một 'Exception' thông thường thay thế. – rmobis

+0

@Raphael_, bạn nói đúng, cảm ơn vì đã sửa chữa. –

Trả lời

33

đặt trong khối thử.

try { 

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

hơn nữa,

DB::insert() lợi nhuận boolean.

DB::update() lợi nhuận boolean

DB::delete() lợi nhuận boolean

DB::insertGetId() bù lại chèn vào id ngoái.

Bạn có thể viết mã theo dõi của mình tùy thuộc vào giá trị.

P.S. Ở trên không phải là lỗi nhưng chỉ để biết truy vấn của bạn có bị ảnh hưởng một số hàng hay không.

+1

Cảm ơn! Yeah, tôi nghĩ sử dụng try-catch nhưng tôi muốn chắc chắn nếu Laravel cung cấp một phương thức trực tiếp. Althoug nếu các phương thức đó trả về một boolean về nếu các hàng bị ảnh hưởng là đủ cho tôi. – Darwing

+0

'return false' trong khối' catch'. đó là cách tôi đã làm cho nó boolean;) – itachi

+0

Chúng ta có thể bắt PDOException như @Rubens nhận xét trong câu hỏi? – sangam

Các vấn đề liên quan