protected $casts = [
'properties' => 'object'
];
$user = User::find(1);
$user->properties->role = 'admin';
$user->save();
$user->properties
это magic __get
, который возвращает новый объект, поэтому его изменения не затронут саму модель.$user = User::find(1);
$temp = $user->properties;
$temp->role = 'admin';
$user->properties = $temp;
$user->save();