In some cases you do not want anyone to perform any action with a record, you are working with. I such case you may take possessiong of a given record using DB lock.
Laravel offers 2 methods to deal with pessimistic locking.
Shared lock is, when more than one transaction is granted read access to a given record. One transaction gets shared lock on a record.
DB::table('tbl_order')->where('amount', '>', 100)->sharedLock()->get();
You can use it, when reading to prevent the rows from being modified or from being selected with another shared lock. Or you can lock some row(s) until your transaction finishes updating.
DB::table('tbl_order')->where('amount', '>', 100)->lockForUpdate()->get();