Php 如何使用Laravel框架更新MySQL中的json数据?
我想用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中: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”=>发布“消息级别”, “
[
{"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解码,请检查我的更新答案。