Hey there! Today, I want to walk you through a cool enhancement for your Laravel 10 projects - using UUIDs (Universally Unique Identifiers). UUIDs are a special type of identifier that are unique across the globe, making them perfect for primary keys in databases.
In this guide, I'll take you through the steps, one by one, on how to integrate UUIDs seamlessly into your Laravel 10 application. It's simpler than you might think, and the benefits, especially in distributed systems, can be quite significant.
Let's dive in and make our Laravel projects even more awesome with UUIDs.
Generating UUID using Str Facade
Str facade in Laravel is another convenient way to generate UUIDs. Here's a guide on how to use the Str facade for UUIDs in Laravel 10.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class UserController extends Controller
{
/**
* Write code on Construct
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$uuid = Str::uuid();
dd($uuid);
}
/**
* Write code on Construct
*
* @return \Illuminate\Http\Response
*/
public function view(Request $request)
{
$uuid = Str::orderedUuid();
dd($uuid);
}
}
Generate UUIds Using ramsey/uuid Composer Package
Here's a step-by-step guide on how to use UUIDs in Laravel 10 using ramsey/uuid
Step 1: Install Required Packages
Open your terminal and navigate to your Laravel project directory. Install the ramsey/uuid package, which Laravel will use to generate UUIDs:
composer require ramsey/uuid
Step 2: Update Database Schema
In your database migrations, replace the traditional id field with a uuid field. Open your migration file and make the necessary changes:
// In a migration file
public function up()
{
Schema::create('your_table', function (Blueprint $table) {
$table->uuid('id')->primary();
// Add other columns as needed
$table->timestamps();
});
}
Step 3: Update Model
In your model, specify that the primary key is a UUID:
use Illuminate\Database\Eloquent\Model;
use Ramsey\Uuid\Uuid;
class YourModel extends Model
{
// Specify the primary key
protected $primaryKey = 'id';
// Define the key type as UUID
protected $keyType = 'string';
// Disable incrementing for UUIDs
public $incrementing = false;
// Generate UUID before saving the model
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->id = Uuid::uuid4()->toString();
});
}
// Other model code...
// techsolutionstuff.com
}
Step 4: Update Controllers
you'll need to update your controllers and views like the below code.
// YourController.php
use App\Models\YourModel;
use Illuminate\Http\Request;
class YourController extends Controller
{
public function show($id)
{
$record = YourModel::find($id);
// Rest of your code...
}
// Other techsolutionstuff controller methods...
}
Step 5: Handle UUIDs in Routes
If your routes depend on the primary key, ensure they accept UUIDs. For example:
Route::get('/your_resource/{id}', 'YourController@show');
Step 6: Migrate Database
Run the migration to apply the changes to your database:
php artisan migrate
Step 7: Use UUIDs in Your Application
Now, you can create, retrieve, update, and delete records using UUIDs as primary keys.
// Example of creating a record
$record = YourModel::create([
'column1' => 'value1',
'column2' => 'value2',
]);
// Example of retrieving a record by UUID
$retrievedRecord = YourModel::find($record->id);
// Example of updating a record
$retrievedRecord->update([
'column1' => 'new value',
]);
// Example of deleting a record
$retrievedRecord->delete();
Conclusion:
That's it! You've successfully implemented UUIDs in Laravel 10 for your application. This approach provides a unique identifier for each record and can be particularly useful in distributed systems.
Top comments (0)