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

Php 如何使用Laravel框架更新MySQL中的json数据?,php,mysql,json,database,laravel,Php,Mysql,Json,Database,Laravel,我想用Laravel创建一个票务系统。我将聊天数据存储在json数据类型中。当用户想要发送她/他的票证时,我会获取她/他的数据并将其存储在以下代码中: $messages=数组[ “消息标题”=>发布“消息标题”, “消息正文”=>发布“消息正文”, 'type'=>'q', '创建时间'=>日期'Y/m/d H:i:s', ]; $messagesToJson=json_encode$messages; $query=DB::表“测试”->insert[ “级别id”=>发布“消息级别”, “

我想用Laravel创建一个票务系统。我将聊天数据存储在json数据类型中。当用户想要发送她/他的票证时,我会获取她/他的数据并将其存储在以下代码中:

$messages=数组[ “消息标题”=>发布“消息标题”, “消息正文”=>发布“消息正文”, 'type'=>'q', '创建时间'=>日期'Y/m/d H:i:s', ]; $messagesToJson=json_encode$messages; $query=DB::表“测试”->insert[ “级别id”=>发布“消息级别”, “状态”=>0, “票证id”=>发布“用户id”。时间, “用户id”=>发布“用户id”, '后端用户\u id'=>, 'messages'=>$messagesToJson, ]; 这些数据存储在MySQL中:

[
    {"message_title":"This is title","message_body":"Some text ... .","type":"q","created_at":"2020\/02\/29 20:42:26"}
]
但我的问题是:当用户想在此票据中询问一个新问题时,如何在该数组中插入一个新对象,如下所示:

[
    {"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"}
]
我的更新代码是:

$messages=数组 'message_body'=>post'sendText', 'type'=>'q', '创建时间'=>日期'Y/m/d H:i:s', ; $messagesToJson=json_encode$messages; $updateQuery=DB::updateUPDATE synon\u子系统\u票务 设置messages=JSON_SETmessages,“$[$countMessages]”,“$messagesToJson”,其中id=“$id”;
MySQL支持json列。您可以在laravel中创建和更新json列,如下所示

$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的,MySQL也支持json列。您可以在laravel中创建和更新json列,如下所示

$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's,您有两种选择:

获取当前值,附加消息并更新:

$tiket=DB::table'synon\u subsystem\u ticketing'->find$id; $messages=json_解码$ticket->messages??[]; //如果在模型上使用属性转换,则不需要json_解码 $messages[]=数组 'message_body'=>post'sendText', 'type'=>'q', '创建时间'=>日期'Y/m/d H:i:s', ; $messages=json_encode$messages//如果在模型上使用属性转换,则不需要json_编码 DB::表'synon\u子系统\u票务' ->其中'id',$id ->更新['messages'=>$messages]; 注意:在和上检查Laravel文档

对原始查询使用MySql函数

您有两种选择:

获取当前值,附加消息并更新:

$tiket=DB::table'synon\u subsystem\u ticketing'->find$id; $messages=json_解码$ticket->messages??[]; //如果在模型上使用属性转换,则不需要json_解码 $messages[]=数组 'message_body'=>post'sendText', 'type'=>'q', '创建时间'=>日期'Y/m/d H:i:s', ; $messages=json_encode$messages//如果在模型上使用属性转换,则不需要json_编码 DB::表'synon\u子系统\u票务' ->其中'id',$id ->更新['messages'=>$messages]; 注意:在和上检查Laravel文档

对原始查询使用MySql函数


请发布您当前的更新函数。在我的问题中添加更新代码。请发布您当前的更新函数。在我的问题中添加更新代码。亲爱的Hafez,我使用了1种方式,但我收到了此错误:[]运算符不支持字符串,此错误指向$messages[]=…@FarzinBidokhti似乎您需要对消息进行json_解码,检查我的更新答案。亲爱的Hafez,我使用了1种方式,但我得到了以下错误:[]运算符不支持字符串,此错误指向$messages[]=…@FarzinBidokhti似乎您需要对消息进行json解码,请检查我的更新答案。