Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel中取消序列化数据_Php_Laravel_Serialization - Fatal编程技术网

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)