Well, Laravel DB transactions provide a retry method where failed transactions can be retried, That is automatic transactions:
\\DB::transaction(function(){