无法在数据库 Laravel 中存储 Json 对象
Posted
技术标签:
【中文标题】无法在数据库 Laravel 中存储 Json 对象【英文标题】:Unable to store Json object in database Laravel 【发布时间】:2020-06-14 15:00:38 【问题描述】:在创建计费按钮后,我正在开发一个计费表,它正在创建每个表单元格数组数据的 JSON 对象并通过 AJAX 发送到控制器。
jQuery 代码 $(".bill").click(function()
var iname_item=[];
var qt_item=[];
var price_item=[];
var paying_item=[];
var bal_item=[];
$('.iname_item').each(function()
iname_item.push($(this).text());
);
$('.qt_item').each(function()
qt_item.push($(this).text());
);
$('.price_item').each(function()
price_item.push($(this).text());
);
$('.paying_item').each(function()
paying_item.push($(this).text());
);
$('.bal_item').each(function()
bal_item.push($(this).text());
);
var cn_iname_item=JSON.stringify(iname_item);
var cn_qt_item=JSON.stringify(qt_item);
var cn_price_item=JSON.stringify(price_item);
var cn_paying_item=JSON.stringify(paying_item);
var cn_bal_item=JSON.stringify(bal_item);
alert(cn_iname_item);
var datastring="item_iname="+cn_iname_item+"&item_qt="+cn_qt_item+"&item_price="+cn_price_item+"&item_paying="+cn_paying_item+"&item_bal="+cn_bal_item;
$.ajax(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
,
type:'POST',
url:'/billing',
data:datastring,
success:function(data)
console.log(data);
,
);
);
如何迭代这个 JSON 数据并存储到数据库中?
array:5 [
"item_iname" => "["Oats","Muesli"]"
"item_qt" => "["2","5"]"
"item_price" => "["500","300"]"
"item_paying" => "["500","300"]"
"item_bal" => "["0","0"]"
]
【问题讨论】:
你的控制器在做什么?你的数据库结构是什么? 现在控制器只得到 $request->all();和 json_decode 特定请求,如 $iname=json_decode($request->get(item_iname),true); 【参考方案1】:几种方法。
最简单:
在您的表中创建一个文本列(例如:属性“数据”)。标准的 laravel 东西。我相信你可以做到。 让您的代码执行此操作:$object = new yourModel(); $object->data = json_encode($array); $object->save();
下一个方法,但更好:属性转换
在表格中创建一个文本列。同上。 为您的模型添加默认演员:让您的代码执行此操作:受保护的 $casts = ['data' => 'array'];
$object = new yourModel(); $object->data = $array; $object->save();
注意:这是给你一个想法的伪代码。确保您的应用程序中有正确的代码。
更多关于 laravel 中属性转换的信息: laravel documentation about attribute casting
【讨论】:
$iname=json_decode($request->get('item_iname'),true) ;我得到了这样的每个 $request 数据,现在我们有这么多 item_name 显然下一步是什么?如何迭代所有这些请求并存储到数据库中,我已经在我的表中为每个单元格创建了列,例如:item_name、item_qt、item_price、paid、item_bal 那是默认的 php?你需要一个例子吗?以上是关于无法在数据库 Laravel 中存储 Json 对象的主要内容,如果未能解决你的问题,请参考以下文章
如何自定义 laravel api 的 json 响应并在 vuex 中显示它们
从laravel控制器返回json时尝试获取非对象的属性“id”