Skip to content

Instantly share code, notes, and snippets.

@culshaw
Created November 27, 2013 10:17
Show Gist options
  • Save culshaw/7673504 to your computer and use it in GitHub Desktop.
Save culshaw/7673504 to your computer and use it in GitHub Desktop.
Sweet Laravel prebinding for model.
<?php
// Base as in "Base" Model--others inherit from this one
class BaseModel extends \Illuminate\Database\Eloquent\Model
{
public $incrementing = false;
protected function gen_uuid() {
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
// 16 bits for "time_mid"
mt_rand( 0, 0xffff ),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand( 0, 0x0fff ) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand( 0, 0x3fff ) | 0x8000,
// 48 bits for "node"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
}
public static function boot() {
parent::boot();
static::creating(function($model) {
$model->id = $model->gen_uuid(); // or something that generates a better UUID
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment