【Laravel9以降】主キーをUUIDにする方法

Laravel

スポンサーリンク

Laravel9以降からはLaravelが主キーをUUIDにする方法を用意してくれています。

簡単にできるのでその方法を紹介します。

やり方

例えば、Usersテーブルの主キー(id)をUUIDにしたい場合、

1.Usersテーブルのマイグレーションファイルの「$table->id()」を削除して、代わりに「$table->uuid('id’)」を追加します。

// 省略
    public function up(): void
    {
        Schema::create('users', function (Blueprint $table) {
            // $table->id(); ←削除
            $table->uuid('id'); // ←追加(引数にはカラム名を指定)
// 省略

2.Userモデル(\app\Models\User.php)のトレイとに「use HasUuids」を追加

// 省略
use Illuminate\Database\Eloquent\Concerns\HasUuids;
// 省略
class User extends Authenticatable
{
    // 省略
    use HasUuids;
// 省略

たったこれだけで主キーをUUIDにしてくれます。

さらに、このUUIDは順序付き(ordered)UUIDなので、ソートやインデックスにも使えます。

補足:外部キー(foreign key)としてUUIDのカラムを指定する場合

foreignIdではなく、foreignUuidを使う

// $table->foreignId('user_id') ←これではない(UNSIGNED BIGINTの型)
$table->foreignUuid('user_id') // ←こちらにする(UUIDの型)

Laravel

Posted by ton