Eloquent 在 laravel 更新而不删除旧内容
Eloquent update in laravel without deleting the old content
我的 class 中有状态属性。创建新实例时,使用 'create',我将一个数组传递给状态。
class email extends Eloquent{
protected $table = 'emails';
protected $fillable = array(
'status',
);
}
这是结果
"status": {
"sent": false,
"deleted": false,
"silent": false
}
我正在尝试这样做以仅更新其中一个状态。
$dest= email::where('uid', "5040")->update(['status.sent'=>true]);
但这会产生我不喜欢的结果。
"status": {
"sent": true
}
之前写的内容都被删除了,这个结果怎么来的
"status": {
"sent": true,
"deleted": false,
"silent": false
}
我有一个查询银行并获取状态数组、存储它、更改它和更新它的想法,但这会让我查询银行两次。一个获取数组,另一个更新。有一种方法,比如 'spread'(...)。或者更正确和简单的东西。
在模型中添加 $casts
protected $casts = [
'status'=>'array'
];
然后
$dest = email::where('uid', "5040")->update(['status->sent' => true]);
参考:https://laravel.com/docs/6.x/queries#updating-json-columns
我的 class 中有状态属性。创建新实例时,使用 'create',我将一个数组传递给状态。
class email extends Eloquent{
protected $table = 'emails';
protected $fillable = array(
'status',
);
}
这是结果
"status": {
"sent": false,
"deleted": false,
"silent": false
}
我正在尝试这样做以仅更新其中一个状态。
$dest= email::where('uid', "5040")->update(['status.sent'=>true]);
但这会产生我不喜欢的结果。
"status": {
"sent": true
}
之前写的内容都被删除了,这个结果怎么来的
"status": {
"sent": true,
"deleted": false,
"silent": false
}
我有一个查询银行并获取状态数组、存储它、更改它和更新它的想法,但这会让我查询银行两次。一个获取数组,另一个更新。有一种方法,比如 'spread'(...)。或者更正确和简单的东西。
在模型中添加 $casts
protected $casts = [
'status'=>'array'
];
然后
$dest = email::where('uid', "5040")->update(['status->sent' => true]);
参考:https://laravel.com/docs/6.x/queries#updating-json-columns