我有一个接收API数据的类,我想将所有响应包装到集合类中。所以,我从API调用接收数据,将它变成一个普通的关联php数组,然后使用帮助器将其包装起来。将关联数组转换为类似于Eloquent查询集合的集合
我只是期待它的工作就像Eloquent一样,你可以将一个键作为一个集合属性来引用,但它不会。
下面是响应数据的一个例子,我会得到:
$data = [
'status' => 'SUCCESS',
'message' => 'Your request was received.',
'data' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address' => [
'street' => '123 Main St.',
'city' => 'Any City',
'state' => 'TX',
'zip' => '12345',
'country' => 'USA'
],
'email' => '[email protected]',
'phone' => '(123) 456-7890',
'role' => 'Administrator',
'active_orders' => 3
]
];
$response = collect($data);
我想能够集合中来包装这一数据,并使用它像这样:
$response->data->address->street
或$response->data->first_name
但是,我得到一个错误,说Property [data] does not exist on this collection instance.
我必须参考它像一个数组,如果我想访问它。例如。 $response['data']['first_name']
。如果我想使用这种语法,我会保持它作为一个数组。
如何递归设置我的集合属性作为数组键名,这样我就可以像使用Eloquent查询那样使用它了?
你是如何得到这个回应的?如果你是'json_decode'作为HTTP请求的结果,你可以改为'json_decode'返回一个'StdClass'对象表示而不是数组。这将允许您参考您打算提供的数据。 –