在我的模态上,我有两个函数,用于在数据更改时记录数据。这些在下面。
namespace App\Models;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Contracts\Activity;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Receivinglogentry extends Model
{
use HasFactory;
use LogsActivity;
protected $fillable = [
'status',
'amt_shipment',
'container',
'po',
'etd_date',
'eta_date',
];
protected $casts = [
'po_ref' => 'json',
];
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()->logOnly(['*'])->logOnlyDirty();
}
public function tapActivity(Activity $activity,string $eventName)
{
$current_user = Auth::user()->name;
$event = $activity->attributes['event'];
$data = $activity->relations['subject']->attributes['container'];
$masterID = $activity->relations['subject']->attributes['id'];
$activity->description = "{$current_user} has {$event} Container : {$data}";
$activity->causer_name = $current_user;
$activity->master_id = $masterID ;
$activity->log_name = 'Receivinglogentry';
}
}
fillable
数据status
已存储为整数值。但我必须将其记录为字符串值,例如 PENDING
或 ACTIVE
。任何关于自定义记录属性的建议都会被采纳。
最佳答案
你可以尝试 ENUM 概念,但从 Laravel 9 开始。这是引用链接 - https://enversanli.medium.com/how-to-use-enums-with-laravel-9-d18f1ee35b56
在那里,他们描述了一个枚举UserRoleEnum:string
,您可以根据自己的要求格式化它。
就您而言, key 本身就是一个数字。所以我建议将其设置为如下字符串。
enum StatusEnum:string
{
case STATUS_101 = 'Pending';
case STATUS_34 = 'Completed';
case STATUS_22 = 'On hold';
}
然后用您的可填写状态来调用它,例如 "STATUS_"+ $fillable.status
如果不使用 Laravel 9,您可以尝试如下所述: https://stackoverflow.com/a/55298089/2086966
class MyClass {
const DEFAULT = 'default';
const SOCIAL = 'social';
const WHATEVER = 'whatever';
public static $types = [self::DEFAULT, self::SOCIAL, self::WHATEVER];
然后将规则编写为:
'type' => Rule::in(MyClass::$types)
关于Laravel Spatie - 通过模式审核日志时的自定义属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71428309/