Php 在laravel中取消序列化数据
我使用Php 在laravel中取消序列化数据,php,laravel,serialization,Php,Laravel,Serialization,我使用serialize方法将购物车数据保存到orders表中,现在在我的订单“查看”页面中,我想向用户显示它们以显示其订单历史记录 如何将以前序列化的数据还原为PHP中可用的对象/数组 保存数据的代码片段:$order->cart=serialize($cartItems) 我尝试返回订单索引视图的方法: /** * Action to receive all orders from the current * logged-in user. This action will return
serialize
方法将购物车数据保存到orders
表中,现在在我的订单“查看”页面中,我想向用户显示它们以显示其订单历史记录
如何将以前序列化的数据还原为PHP中可用的对象/数组
保存数据的代码片段:$order->cart=serialize($cartItems)代码>
我尝试返回订单索引视图的方法:
/**
* Action to receive all orders from the current
* logged-in user. This action will return the
* 'front.orders' view with the orders compacted inside.
*
* @return orders view
*/
public function orders() {
// get the orders from the current logged in user
$orders = Order::where('user_id', '=', Auth::user()->id)->get();
// view the `front.orders` page passing in the `orders` variable
return view('front.orders', compact('orders'));
}
只是一个内置的变量处理PHP函数。与此相对应的是。您可以使用方法为整个集合购物车属性:
$orders = $orders->map(function($i) {
$i->cart = unserialize($i->cart);
return $i;
});
或者,您可以使用自动取消序列化属性:
public function getCartAttribute($value)
{
return unserialize($value);
}
或者只是Blade中的数据:
@foreach ($orders as $order)
{{ unserialize($order->cart)->someData }}
@endforeach
确保可以使用前面答案中的内置unserialize()
函数
但是
避免在代码中使用unserialize()
,因为exloit:
我将使用Magento 1中的安全简单库:
如果我使用map,如何使用我的查询仅获取登录的用户订单而不是所有用户?@mafortis您显示的代码将仅获取登录的用户订单。收到订单后使用map即可。我得到的错误是unserialize():偏移量为91字节的0处出错
@mafortis它与问题无关,因此如果您不亲自处理,您可以开始另一个答案。你可以从阅读开始。好了,它现在开始工作了,这是我的刀片代码,@foreach($orders as$order){{{$order->cart}} @endforeach
这是屏幕截图,我如何正确获取信息?这不是我知道的,我想知道的是如何在视图中返回我的数据?这就是我目前拥有的,您必须将未序列化的数据保存在变量中->$data=unserialize($serializedData)
。之后,您可以使用诸如$data[“name”]
之类的索引来访问数据。此外,我看到您总是获得相同的数据。这只是测试数据的一个“问题”,还是另一个问题?
$parser = new Unserialize_Parser();
$parser->unserialize($yourStringWithArray)