[], ]; protected $casts = [ 'type' => MessageType::class, 'additional' => 'json', ]; protected $fillable = [ 'type', 'title', 'content', 'additional', 'employee_ids', ]; public function scopeOfEmployee(Builder $query, Employee $employee) { $query->whereJsonLength('employee_ids', 0)->orWhereJsonContains('employee_ids', $employee->id); } public function readingLogs(): HasMany { return $this->hasMany(MessageReadingLog::class); } protected function employeeIds(): Attribute { return Attribute::make( get: function (mixed $value) { if (! is_array($ids = json_decode($value ?? '', true))) { $ids = []; } return $ids; }, set: fn (mixed $value) => json_encode(is_array($value) ? $value : []), ); } }