【问题标题】:Laravel update json column in postgresqlLaravel 更新 postgresql 中的 json 列
【发布时间】:2019-10-14 03:07:09
【问题描述】:

在 postgresql db 中,我有一个列类型 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”出现在那里。

那么如何正确地在列中添加新值而不删除以前的值? 谢谢。

【问题讨论】:

  • 你可以这样做: $activities = $user->userLife->activities; $activities['new_key'] = 'new_value'; $user->userLife->activities = $activities; $user->save();

标签: json laravel postgresql


【解决方案1】:

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

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

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

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

【讨论】:

  • “字符串不支持 [] 运算符”知道为什么“活动”不转换为数组吗?
猜你喜欢
  • 2018-04-20
  • 2015-09-28
  • 2015-09-01
  • 2018-06-22
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多