在 Laravel 中,你可以使用 Eloquent ORM 或者 Query Builder 來實現 MySQL 行級鎖。這里我將為你提供兩種方法的示例:
方法 1:使用 Eloquent ORM
首先,確保你已經創建了一個 Eloquent 模型。例如,我們有一個名為 Post
的模型:
use App\Models\Post;
// 開始事務
DB::beginTransaction();
try {
// 獲取需要鎖定行的記錄
$post = Post::find($postId);
// 鎖定記錄,直到事務結束
$post->lock();
// 在這里執行你的業務邏輯
// ...
// 提交事務
DB::commit();
} catch (\Exception $e) {
// 回滾事務
DB::rollback();
// 處理異常
// ...
}
方法 2:使用 Query Builder
你也可以使用 Query Builder 來實現行級鎖。例如,我們有一個名為 posts
的表:
use Illuminate\Support\Facades\DB;
// 開始事務
DB::beginTransaction();
try {
// 獲取需要鎖定行的記錄
$post = DB::table('posts')
->where('id', $postId)
->lock()
->first();
// 在這里執行你的業務邏輯
// ...
// 提交事務
DB::commit();
} catch (\Exception $e) {
// 回滾事務
DB::rollback();
// 處理異常
// ...
}
在這兩個示例中,我們都使用了 lock()
方法來實現行級鎖。這將鎖定指定的記錄,直到事務結束。請注意,行級鎖可能會導致性能問題,因此在不需要的情況下盡量避免使用。