如何使用laravel或本机php更新来自mysql数据库的JSON数据?
我有一个长文本类型的数据库表,因为我将结构更改为JSON,因为我将把JSON数据放在那里,插入就可以了。我的问题是,我想在使用laravel/php检索JSON数据后更新其中的一部分 我用下面的代码试过了,但我很难做到如何使用laravel或本机php更新来自mysql数据库的JSON数据?,php,mysql,json,laravel,Php,Mysql,Json,Laravel,我有一个长文本类型的数据库表,因为我将结构更改为JSON,因为我将把JSON数据放在那里,插入就可以了。我的问题是,我想在使用laravel/php检索JSON数据后更新其中的一部分 我用下面的代码试过了,但我很难做到 $qtyy = $orderDetail->quantity; $product = Product::findOrFail($prod_id); $json = json_decode($product->variations, true); forea
$qtyy = $orderDetail->quantity;
$product = Product::findOrFail($prod_id);
$json = json_decode($product->variations, true);
foreach ($json as $key => $value) {
if($key == $orderDetail->variation){
$total = (int)$value->qty + (int)$qtyy;
DB::table('products')
->where('id', $prod_id)
->update([$value->qty => $total]);
}
}
我想更改数据库中的“数量”
{
"AliceBlue-Cream":{
"price":"500",
"sku":"V-AliceBlue-Cream",
"qty":"1000"
},
"Amethyst-Cream":{
"price":"500",
"sku":"V-Amethyst-Cream",
"qty":"2998" <- I want to update that
}
}
{
“艾丽赛蓝乳膏”:{
“价格”:“500”,
“sku”:“V-AliceBlue-Cream”,
“数量”:“1000”
},
“紫水晶霜”:{
“价格”:“500”,
“sku”:“V-紫水晶霜”,
“数量”:“2998”试试这个,对我来说很有用
DB::table('products')
->where('id', $prod_id)
->update([
"Amethyst-Cream->qty" => "2998"
]);
您可以从laravel文档中尝试属性转换:
如果数据库的JSON或文本字段类型包含
序列化JSON,将数组强制转换添加到该属性将
自动反序列化
只需使用列名将强制转换数组添加到模型中:
protected $casts = [
'myColumn' => 'array',
];
稍后,当您准备更新其值时:
$product = Product::find(1);
$myUpdatedColumn = $product->myColumn;
$myUpdatedColumn['qty'] = 2998;
$product->myColumn = $myUpdatedColumn;
$product->save();
我需要动态地使用它。我不知道为什么我不能这样做。我的代码有什么问题吗?我可以知道你的答案和我的有什么不同吗?我没有使用我的模型来查询。我使用DB类在数据库中查询。可以吗?这只适用于雄辩的模型,只要用模型切换你的查询生成器,我可以看到你已经开始了t产品型号好的,我会试试的,谢谢。如果我能让它运行,我会在这里发表评论。