9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LaravelでUUIDを使いたい

Last updated at Posted at 2017-08-28

tl;dr

UUIDは場合によっては使ったほうがよい。
LaravelでUUIDを使う場合は、Modelを継承してそこにUUID用の記述を書く。

UUIDについて

みなさん、UUIDつかってますか?
Laravelでアプリケーションをスクラッチで組む際は、
基本的にIncrementalなID(1,2....)を使うことが多いと思います。

ただ、時と場合によっては、UUIDを使いたい/使わないといけないということも出てくるかと思います。

  • もともとUUIDでDBMSが動いていた場合
  • テーブルのレコード総数をそとから隠蔽したい場合
  • その他色々。。。誤魔化し誤魔化し

参考(重要)

この記事ではUUIDをいつ使うべき?というお話はしません。
いつ使うべきか、というのを知りたい方は、下の宗教戦争をお読み下さいw

Against UUID: Why Auto Increment Is A Terrible Idea
For UUID: Do you really need a UUID/GUID?

LaravelでUUIDを使う方法

Laravelで一番簡単UUIDを使うには、
Illuminate\Database\Eloquent\Modelを一度自作Modelで継承し、
それを更にここのModelに継承させるという形を取ります。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Util\CommonUtil; //自作Utility Class

abstract class BaseModel extends Model
{
    public $incrementing = false; // AutoIncrementをOffにします。

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

        // Create&Save時に自動でidをインサート
        self::creating(function ($model) {
            if (empty($model->id)) {
                $model->id = CommonUtil::generateUUIDV4(); // UUIDを作成、挿入
            }
        });

        self::saving(function ($model) {
            if (empty($model->id)) {
                $model->id = CommonUtil::generateUUIDV4(); // UUIDを作成、挿入
            }
        });
    }
}

UUIDを使って良いLifeを!

UUIDを使うべきタイミングはご自身の判断におまかせしますが、
もし使いたいと思った際はLaravelでも割と簡単に使えるので、
ぜひ導入してみて下さい!

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?