for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace mindtwo\LaravelAutoCreateUuid;
use Illuminate\Support\Str;
use Ramsey\Uuid\Uuid;
trait AutoCreateUuid
{
/**
* Boot auto create uuid trait.
*/
public static function bootAutoCreateUuid()
// Auto populate uuid column on model creation
static::creating(function ($model) {
if(empty($model->{$model->getUuidColumn()}) || !Uuid::isValid($model->{$model->getUuidColumn()})) {
$model->{$model->getUuidColumn()} = Str::uuid()->toString();
}
});
* Get the column name for uuid attribute.
*
* @return string
public function getUuidColumn(): string
return ! empty($this->uuid_column) ? $this->uuid_column : 'uuid';
uuid_column
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
class MyClass { } $x = new MyClass(); $x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:
class MyClass { public $foo; } $x = new MyClass(); $x->foo = true;
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: