Chào bạn! UUID (Universally Unique Identifier) là một chuỗi duy nhất được sử dụng phổ biến trong các ứng dụng để thay thế ID tự động tăng (auto-increment ID). Laravel 11 hỗ trợ UUID một cách dễ dàng với các tính năng tích hợp sẵn. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo UUID trong Laravel 11.
Mời bạn tham khảo thêm: Có nên sử dụng UUID làm khóa chính trong cơ sở dữ liệu?
1. Cài đặt Laravel 11
Trước tiên, nếu bạn chưa có dự án Laravel 11, hãy tạo một dự án mới bằng cách chạy lệnh:
composer create-project laravel/laravel demo-codetuthubSau khi cài đặt hoàn tất, di chuyển vào thư mục dự án:
cd demo-codetuthub2. Tạo Model với UUID
Laravel hỗ trợ UUID thông qua trait HasUuid trong Eloquent Model. Hãy tạo một model mới:
php artisan make:model Post -mMở file migration mới được tạo trong thư mục database/migrations/ và chỉnh sửa như sau:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
3. Sử dụng UUID trong Model
Trong file app/Models/Post.php, chúng ta thêm trait HasUuids để tự động tạo UUID khi một bản ghi mới được thêm vào:
Ở đây:
use HasUuids;giúp Laravel tự động sinh UUID thay vì ID số.protected $keyType = 'string';chỉ định kiểu dữ liệu của khóa chính là chuỗi.public $incrementing = false;vô hiệu hóa auto-increment.
4. Chạy Migration
Chạy lệnh sau để tạo bảng trong database:
php artisan migrate5. Tạo dữ liệu mẫu
Chúng ta có thể thử tạo một bản ghi bằng cách sử dụng Tinker:
php artisan tinkerSau đó, chạy các lệnh sau:
use App\Models\Post;
Post::create(['title' => 'Bài viết đầu tiên', 'content' => 'Nội dung bài viết...']);UUID sẽ được tự động sinh ra cho mỗi bản ghi.
6. Tạo UUID bằng Str helper
Ngoài cách sử dụng HasUuids, bạn cũng có thể tạo UUID thủ công bằng Str::uuid() hoặc Str::orderedUuid(), như sau:
use Illuminate\Support\Str;
$uuid = Str::uuid()->toString();
echo $uuid;Hoặc sử dụng orderedUuid(), giúp UUID có thứ tự sắp xếp dễ dàng hơn:
$orderedUuid = Str::orderedUuid()->toString();
echo $orderedUuid;UUID được tạo ra theo hai phương pháp này đều là duy nhất và có thể được sử dụng trong các bảng hoặc bất kỳ nơi nào trong ứng dụng của bạn.
7. Kết luận
Sử dụng UUID giúp hệ thống bảo mật hơn và tránh được các vấn đề liên quan đến ID tự động tăng. Laravel 11 hỗ trợ UUID một cách dễ dàng thông qua HasUuids, giúp việc triển khai trở nên đơn giản và hiệu quả. Ngoài ra, bạn cũng có thể sử dụng Str::uuid() hoặc Str::orderedUuid() để tạo UUID thủ công khi cần.
Hy vọng bài viết này giúp bạn hiểu rõ cách sử dụng UUID trong Laravel 11. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại bình luận bên dưới!
Source code: https://github.com/vantoantg/laravel-11-demo/tree/Laravel-11-UUID








