Thảo Trịnh -
  • Chuyện đọc
  • Lập trình
    • Học nghề
    • Làm thợ
    • Agile Mindset
      • Agile Project Management (APM)
      • Tư duy linh hoạt
  • Nói chuyện vui
Thảo Trịnh -
Chuyện đọc
Lập trình
    Học nghề
    Làm thợ
    Agile Mindset
    Agile Project Management (APM)
    Tư duy linh hoạt
Nói chuyện vui
  • Chuyện đọc
  • Lập trình
    • Học nghề
    • Làm thợ
    • Agile Mindset
      • Agile Project Management (APM)
      • Tư duy linh hoạt
  • Nói chuyện vui
Học nghề

Database Transactions

Bạn có thể sử dụng phương thức transaction của DB facade để chạy tập hợp các câu lệnh trong một database transaction. Nếu một exception xảy ra trong transaction Closure, transaction sẽ tự động được rolled back. Nếu Closure thực thi thành công, transaction sẽ tự động được committed. Bạn không cần lo lắng về việc phải thực hiện rolling back thủ công trong khi sử dụng phương thức transaction:

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();
});

Handling Deadlocks

Phương thức transaction cho phép một tham số thứ 2 để định nghĩa số lần mà transaction sẽ được reattempted khi mà deadlock xảy ra. Khi có hiện tượng deadlock, một exception sẽ được đưa ra

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();
}, 5);

Manually Using Transactions

Nếu bạn muốn quản lý transaction thủ công, bạn có thể sử dụng phương thức beginTransaction trong DB facade:

DB::beginTransaction();

Bạn có thể rollBack transaction qua phương thức rollBack:

DB::rollBack();

Cuối cùng bạn có thể commit qua phương thức commit:

DB::commit();

Ví dụ

try { DB::beginTransaction(); $this->saveList($request->input('id'), $request->get('list'), 0); $result = ['success' => trans('backend/common.success'), 'status' => 200]; DB::commit(); return response()->json(json_encode($result)); } catch (\Exception $ex) { DB::rollBack(); $result = ['error' => trans('backend/common.error'), 'status' => 500, 'message' => $ex->getMessage()]; return response()->json($result); } Xem thêm

July 10, 2018by thaotrinh

Tìm kiếm

Tags

5whys Agile Apache blockchain C# CQRS Daily Scrum database DDD deadlocks Dependency Injection Dependency Inversion Design Pattern docker ebook git Good Developer growth mindset kinh tế Pair programing Repository Retrospective Risk Management Scrum Scrumban Scrum Guide Scrum Master Senior Senior Developer singleton solid sống Technical debt UI UnitOfWork UX Viết Động lực

Bài viết mới

Hãy agile đi

Hãy agile đi

Nói chuyện về vấn đề

Nói chuyện về vấn đề

Hỏi 5 lần tại sao

Hỏi 5 lần tại sao

Tư duy linh hoạt là gì

Tư duy linh hoạt là gì

Không phải làm bao nhiêu mà là tạo ra bao nhiêu

Không phải làm bao nhiêu mà là tạo ra bao nhiêu

Một cuộc đời đáng sống

Một cuộc đời đáng sống

Chuyên mục

  • Chuyện đọc
  • Lập trình
    • Agile Mindset
      • Agile Project Management (APM)
      • Tư duy linh hoạt
    • Công nghệ
      • .NET
      • Blockchain
      • Database
    • Học nghề
    • Làm thợ
  • Uncategorized
    • Gã
    • Nói chuyện vui
    • Product
      • Design