50

GitHub - jamesmills/eloquent-uuid: A Laravel Eloquent Model trait for adding and...

 4 years ago
source link: https://github.com/jamesmills/eloquent-uuid
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

Laravel Eloquent UUID

Packagist Packagist Packagist

A Laravel Eloquent Model trait for adding and using a uuid with models.

The trait listens to the creating event. It generates a new UUID and saves it in the uuid column on the model.

Featured in Laravel News

Installation

composer require jamesmills/eloquent-uuid

Use

In order to use this in your models, just put use HasUuidTrait;

<?php

namespace App;
use JamesMills\Uuid\HasUuidTrait;

class User extends Eloquent
{
	use HasUuidTrait;
}

Schema requirements

In order to use this trait, your schema must be something like:

<?php
	// ...
	Schema::create('users', function (Blueprint $table) {
		$table->primary('id');
		$table->uuid('uuid')->unique(); // this will create a CHAR(36) field
		$table->string('username', 32);
		$table->string('password', 50);
		// ...
	});

Querying your models

You may use the findByUuidOrFail method to try and fetch a model directly:

<?php

Route::get('/user/{uuid}', function($uuid) {
    try {
        return App\User::findByUuidOrFail($uuid);
    } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
        abort(404);
    }
});

You may also use the withUuid and withUuids local query scopes with the query builder.

<?php

Route::get('/user/{uuid}', function($uuid) {
    $user = App\User::withUuid($uuid)->first();
    if (! $user) {
        // Do something else...
    }
});
<?php

Route::delete('/users', function(Request $request) {
    // Receive an array of UUIDs
    $uuids = $request->input('uuids');

    // Try to get the Users
    $users = App\User::withUuids($uuids)->all();

    // Handle the delete and return
    $users->delete();
});

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK