Kiểm tra xem mô hình đã được lưu chưa
save()
sẽ trả về boolean, đã lưu hoặc không đã lưu. Vì vậy, bạn có thể làm:
$saved = $myModel->save();
if(!$saved){
App::abort(500, 'Error');
}
Hoặc lưu trực tiếp vào if:
if(!$myModel->save()){
App::abort(500, 'Error');
}
Lưu ý rằng không hợp lý khi gọi save()
hai lần liên tiếp như trong ví dụ của bạn. Và nhân tiện, nhiều lỗi hoặc sự cố khiến mô hình không được lưu sẽ dẫn đến ngoại lệ ...
Kiểm tra xem truy vấn có trả về kết quả không
first()
sẽ trả về null
khi không có bản ghi nào được tìm thấy để séc của bạn hoạt động tìm thấy. Tuy nhiên, thay vào đó, bạn cũng có thể sử dụng firstOrFail()
sẽ tự động ném ra một ModelNotFoundException
khi không tìm thấy gì:
$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();
(Điều này cũng đúng với find()
và findOrFail()
)
Kiểm tra xem truy vấn đã được thực thi chưa
Thật không may với create
nó không dễ như thế đâu. Đây là nguồn:
public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
Như bạn có thể thấy, nó sẽ tạo một phiên bản mới của mô hình với các thuộc tính $attributes
và sau đó gọi save()
. Bây giờ nếu save()
nơi trả về true bạn sẽ không biết vì dù sao thì bạn cũng sẽ nhận được một phiên bản mô hình. Những gì bạn có thể làm chẳng hạn là kiểm tra id mô hình (vì id đó chỉ khả dụng sau khi bản ghi được lưu và id mới tạo được trả về)
if(!$newUser->id){
App::abort(500, 'Some Error');
}