Php Laravel 5.2-添加到现有会话数组将覆盖现有会话

Php Laravel 5.2-添加到现有会话数组将覆盖现有会话,php,arrays,laravel,session,Php,Arrays,Laravel,Session,我试图通过AJAX在Laravel 5中的会话中存储篮子数据,但每次我尝试将一个项目推送到存储为“basket”值的数组中时,现有的“basket”数组都会被覆盖 以下是我的控制器方法: public function add(Request $request) { $success = false; if ($request->ajax()) { $ticket = Ticket::find((int) $request->get('ticket_

我试图通过AJAX在Laravel 5中的会话中存储篮子数据,但每次我尝试将一个项目推送到存储为“basket”值的数组中时,现有的“basket”数组都会被覆盖

以下是我的控制器方法:

public function add(Request $request)
{
    $success = false;

    if ($request->ajax()) {
        $ticket = Ticket::find((int) $request->get('ticket_id'));

        if ($ticket) {
            if (!$request->session()->has('basket')) {
                $request->session()->put('basket', []);
            }   

            $item = [
                'attraction.name'   => $ticket->attraction->name,
                'ticket.quantity'   => $request->get('quantity'),
                'ticket.price'      => $ticket->price,
            ];

            $request->session()->push('basket', [$ticket->id => $item]);

            $success = true;
        }
    }

    return response()->json(['success' => $success]);
}
在第一个实例的basket会话数组中设置了一个项目,但我希望在将更多项目数据发布到此方法时,它会添加到此数组中,而不是覆盖

我希望实现的最终结果是:

Array
(
    [basket] => Array
        (
            [123] => Array
                (
                    [attraction.name] => Attraction 1
                    [ticket.quantity] => 2
                    [ticket.price] => 14.5
                )

            [456] => Array
                (
                    [attraction.name] => Attraction 2
                    [ticket.quantity] => 3
                    [ticket.price] => 12
                )

        )

)
我尝试过使用SessionFacade等效方法,但没有效果:(


任何帮助都将不胜感激。谢谢:)

我曾尝试
array\u merge()
,但我的会话再次被覆盖。所以,在再次戴上调试帽之后,我找到了它发生的原因

每次请求后会话数据都没有持久化。由于我的会话没有被记住,
$request->session()->has('basket')
的计算结果总是
true
,因此每次我的basket会话都被设置回空数组

我需要使用下一行以JSON的形式返回请求,以便会话数据能够持久化。也许这是因为我在AJAX调用中有
数据类型:“json”
作为属性

return response()->json($request);
我还采纳了您的建议,抓起了basket会话数组,将新数据推送到其中,并将其放回会话中


分类!谢谢你们两位的帮助:)

我遇到了类似的问题,并发现在向会话添加值后,您需要调用
session()->save()

我看不出您的代码如何覆盖任何条目。事实上,代码的结果是这样的。它不可能覆盖任何内容。