<?php namespace App; use App\Services\SnowflakeService; trait HasSnowflakePrimary { public static function bootHasSnowflakePrimary() { static::saving(function ($model) { if (is_null($model->getKey())) { $keyName = $model->getKeyName(); $id = SnowflakeService::next(); $model->setAttribute($keyName, $id); } }); } }