Laravel更新Postgresql中的json列

时间:2019-05-28 14:42:35

标签: json laravel postgresql

在postgresql数据库中,我有一个列类型json,称为“活动”。我想在那里添加新的(键->值)对。不删除现有数据。

此刻,我的代码如下:

$user = User::with('userLife')->where(['id' =>$id])->first();
    $user->userLife->confirmation_token = null;
    $user->userLife->activities = ['emailConfirmed' => Carbon::now()->timestamp];
    $user->email_confirmed = true;
    $user->push();

在我的模型中,我添加了:

protected $casts = [
        'activities' => 'array',
    ];

但是当我使用此代码时,列中的所有其他数据都将被删除,并且仅出现“ emailConfirmed”。

那么,如何正确地在列中添加新值而不删除前一个值呢? 谢谢。

1 个答案:

答案 0 :(得分:0)

您应该通过另一个变量将其添加为新元素:

$activities = $user->userLife->activities;

$activities['emailConfirmed'] = Carbon::now()->timestamp;

$user->userLife->activities = $activities;