如何在 Session 上放置和检索 Laravel 集合对象

Sum*_*mit 5 laravel laravel-4 laravel-5

我知道我们可以在 Session 中插入数组,Session::push('person.name','torres')但是如何保留 laravel 集合对象,例如$product = Product::all();,就像Session::put('product',$product);。如何实现这一点?

ntz*_*tzm 6

您可以将任何数据放入会话中,包括对象。由于 aCollection只是一个对象,因此您也可以这样做。

例如:

$products = Product::all();
Session::put('products', $products);
dd(Session::get('products'));
Run Code Online (Sandbox Code Playgroud)

应该回显集合。


Jos*_*ber 5

您应该将其转换为普通数组,然后将它们转换回模型:

存储在会话中

$products = Product::all()->map(function ($product) {
    return $product->getAttributes();
})->all();

Session::put('products', $products);
Run Code Online (Sandbox Code Playgroud)

从会话中检索

$products = Product::hydrate(Session::get('products'));
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看此方法的示例。