mysql - laravel php 数据存储 Array toJson
程序员文章站
2022-05-21 18:55:55
...
$goods = "";
foreach($carts as $key => $c){
$good = Goods::where(["product_id" => $c->product_id,"merchant_id" => $c->merchant_id])->first();
$good -> number = $c->number;
$goods[] = $good;
}
$order = new Order;
$order -> json = $goods;
if( $order->save()){
return response()->json(array( 'status' => 1, 'msg' => "下单成功"));
}else{
return Redirect::back()->withInput()->withErrors('保存失败!');
}
$goods 的到的数据 是一组数组
保存到数据库是就成了 Array 了
然后 用 json 转一下
$goods = $goods->toJson();
toJson() 报错了
Call to a member function toJson() on array
有大神可以指导一下吗
回复内容:
$goods = "";
foreach($carts as $key => $c){
$good = Goods::where(["product_id" => $c->product_id,"merchant_id" => $c->merchant_id])->first();
$good -> number = $c->number;
$goods[] = $good;
}
$order = new Order;
$order -> json = $goods;
if( $order->save()){
return response()->json(array( 'status' => 1, 'msg' => "下单成功"));
}else{
return Redirect::back()->withInput()->withErrors('保存失败!');
}
$goods 的到的数据 是一组数组
保存到数据库是就成了 Array 了
然后 用 json 转一下
$goods = $goods->toJson();
toJson() 报错了
Call to a member function toJson() on array
有大神可以指导一下吗
从你的foreach
来看,最后的$goods
是一个普通的数组,这个数组跟toJSON
没有什么必然联系,在我的记忆中,toJSON
应该不是php内置的吧。
想到的解决方案:
$order -> json = json_encode($goods);
对于上面的代码,还有以下的建议:
foreach($carts as $key => $c){
$good = Goods::where(["product_id" => $c->product_id,"merchant_id" => $c->merchant_id])->first();
$good -> number = $c->number;
$goods[] = $good;
}
上面这一段,我觉得你好好看看Eloquent的Relationship部分,这个应该会很好地解决了。
第二,else关键字其实很多时候是可以不用的:
if( $order->save() ) {
return response()->json(array( 'status' => 1, 'msg' => "下单成功"));
}
return Redirect::back()->withInput()->withErrors('保存失败!');
以上的代码应该也是行得通的
赞楼上,json_encode()是php最常用的内置函数之一,lz不要太过于依赖框架了
上一篇: PHP 表单提交/Post地址
推荐阅读