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

Laravel で モデルのプライマリキーをordered UUIDに変更する

● Laravel で モデルのプライマリキーをordered UUIDに変更する

(例として News.php モデルのプライマリキーを変更してみます)

・1. モデルのプライマリキーの型を変更します

以下のプロパティーを追加します

app/Models/News.php

    // uuidなのでインクリメントOFF
    public $incrementing = false;

    // uuidなので string型
    protected $keyType = 'string';    

・2. モデルの新規作成時に自動的にorderedUuid をIDリセットするようにフックを追加する

同じくモデルファイルに以下を追加します

app/Models/News.php

    protected static function boot()
    {
        parent::boot();

        self::creating(function(News $model) {
            $model->id = \Str::orderedUuid();
        });
    }

・3. マイグレーションファイルの設定を変更して再度データベースを作成します

database/migrations/xxxxxxxx_create_news_table.php

            // $table->increments('id');     // コメントアウト
            $table->uuid('id')->primary(); // uuidに変更

マイグレーションファイルをいちどロールバックして再実行します

php artisan migrate:rollback
php artisan migrate
No.2060
10/05 14:06

edit