人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel で DBテーブルとLaravelモデルに uuidを追加する

● webpatser/laravel-uuid のインストール

composer require webpatser/laravel-uuid

● モデルに uuid カラムを追加

マイグレーションファイルに次のように uuid 型のカラムを追加します
( 実際には CHAR(36)として作成されます )

ユニーク制約をつける場合

$table->uuid('uuid')->after('id')->unique()->comment('uuid');

nullを許可する場合

$table->uuid('uuid')->after('id')->nullable()->comment('uuid');

● uuidを自動的にセットするトレイトを作成する

/app/UuidTrait.php

<?php
namespace App;
use Webpatser\Uuid\Uuid;
trait UuidTrait
{
    public static function bootUuidTrait()
    {
       static::creating(function ($model) {
            $model->uuid = Uuid::generate()->string;
        });
    }
}

● モデルにトレイトを追加

モデルファイルに以下を追加

    use \App\UuidTrait;

● routes/web.php に以下を追加

Route::get("posts/share/{uuid}", "MemoController@share")->name('posts.share')->where([ 'id' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' ]);

/posts/share/05eface0-edc911eb-bfda-2f6c633e3f11 というようなURLでアクセスすることができます

No.1644
07/26 13:33

edit