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でも割と簡単に使えるので、
ぜひ導入してみて下さい!