I have this asset_code that is generated via trait but it always trigger error even if it was use in the model
error
SQLSTATE[HY000]: General error: 1364 Field 'asset_code' doesn't have a default value (Connection: mysql, SQL: insert into `assets` (`purchase_date`, `asset_type`, `category_id`, `brand_id`, `name`, `model`, `serial`, `status`, `file_id`, `created_ts`) values (2025-09-18, it_equipment, 27, 5, Macbook Pro 2020 13" 1TB, M1, X1231a1231qasdq, available, 7, 1758185039))
Model
use App\Enums\Asset\Type;
use App\Enums\Asset\Status;
use App\Models\Traits\AssetCode;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Asset extends BaseModel
{
use AssetCode;
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $fillable = [
'asset_code',
'asset_type',
'category_id',
'brand_id',
'name',
'model',
'serial',
'purchase_date',
'status',
'file_id',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'asset_type' => Type::class,
'status' => Status::class
];
}
trait
<?php
namespace App\Models\Traits;
trait AssetCode
{
public static function bootAssetCode(): void
{
static::creating(function ($model) {
if (empty($model->asset_code)) {
$model->asset_code = self::generateAssetCode();
}
});
}
protected static function generateAssetCode(): string
{
return 'ASSET-' . strtoupper(uniqid());
}
}
I'm using Laravel 12 + Filament v4