我通过执行以下操作将对象存储到会话:
$this->request->session()->write('order', $order);
在另一个控制器中,我尝试将另一个属性添加到同一个对象:
$this->request->session()->write('order.client_id', $client->id);
但由于某种原因,这会覆盖整个对象,而我留下的对象只有一个属性,即新创建的client_id。
这样做的正确方法是什么?
答案 0 :(得分:0)
点用于表示嵌套数组。无论使用何种名称/密钥,此表示法都用于所有会话组件方法。
您确定$order
变量是数组,而不是对象吗?
如果$order
是一个对象,则必须获取该对象,进行更改并将其重新放入会话中。
$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);
答案 1 :(得分:0)
能够通过以下方式解决这个问题:
$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);