首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Laravel框架更新MySQL中的json数据?

如何使用Laravel框架更新MySQL中的json数据?
EN

Stack Overflow用户
提问于 2020-03-01 01:34:38
回答 2查看 2.2K关注 0票数 2

当用户想要发送她/他的工单时,我会获取她/他的数据,并将其与以下代码一起存储:

代码语言:javascript
复制
$messages = array([
    'message_title' => post('message_title'),
    'message_body' => post('message_body'),
    'type' => 'q',
    'created_at' => date('Y/m/d H:i:s'),
]);

$messagesToJson = json_encode($messages);
$query = DB::table('test')->insert([
    'level_id' => post('message_level'),
    'status' => 0,
    'ticket_id' => post('user_id') . time(),
    'user_id' => post('user_id'),
    'backend_user_id' => '',
    'messages' => $messagesToJson,
]);

这些数据存储在MySQL中:

代码语言:javascript
复制
[
    {"message_title":"This is title","message_body":"Some text ... .","type":"q","created_at":"2020\/02\/29 20:42:26"}
]

代码语言:javascript
复制
[
    {"message_title":"This is title","message_body":"Some text ... .","type":"q","created_at":"2020\/02\/29 20:42:26"},
    {"message_title":"Question 2","message_body":"Some text in question 2 ... .","type":"q","created_at":"2020\/02\/29 21:42:26"}
]

我的更新代码是:

代码语言:javascript
复制
$messages = array(
    'message_body' => post('sendText'),
    'type' => 'q',
    'created_at' => date('Y/m/d H:i:s'),
);

$messagesToJson = json_encode($messages);
$updateQuery = DB::update("UPDATE synon_subsystem_ticketing
                  SET messages = JSON_SET(messages, '$[$countMessages]', '$messagesToJson') WHERE id = '$id'");
EN

回答 2

Stack Overflow用户

发布于 2020-03-01 01:51:46

您有两个选项:

  1. 获取当前值,追加您的消息并更新:

$tiket = DB::table('synon_subsystem_ticketing')->find($id);$messages = json_decode($ticket->messages) ??[];//如果您在模型$messages[] = array( 'message_body‘=> post('sendText'),'type’=> 'q','created_at‘=> date('Y/m/d H:i:s'),)上使用属性转换,则不需要json_decode;$messages = json_encode($messages);//如果您在模型DB::table('synon_subsystem_ticketing') ->where('id',$id) ->update('messages‘=> $messages)上使用属性转换,则json_encode不是必需的;

注:检查原始查询上的updating json column

票数 3
EN

Stack Overflow用户

发布于 2020-03-01 01:50:52

MySQL支持json列。您可以在laravel中创建和更新json列,如下所示。

代码语言:javascript
复制
$table->json('tickets_user_info'); // in your migration create json column.

//Update it as shown below.
$affected = DB::table('users')
          ->where('id', 1)
          ->update(['tickets_user_info' => 'what_ever_you_want_to_save_here']);

您可以创建包含旧数据的新数组,并使用所有数据更新json列。

也请阅读laravel的Query Json ColumnsUpdating JSON Columns

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60467835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档