在缓存数据中搜索给出数组第一个索引 1
Searching in cache data gives array first index 1
$this->getCachedCategories();
//Above code Stores the data in cache for future use. So, it goes to the database only
//one time and next time pick the data from cache. So far everything is good.
//I have a search criteria which is in the form of array. I filter above cache data based
//upon the search criteria and gets the data.
foreach ($userInputsForFilter as $key => $value) {
$this->Categories = $this->Categories->where($key, $value);
}
这是截图。如果您注意到检索到的数据的第一个索引是 1 而不是 0。实际上第二条记录是在缓存数据被过滤后出现的。
请问为什么搜索缓存数据时会出现这种情况?进入数据库时不会发生这种情况。
数组到JSON代码
$CategoryResponse = $this->iCategory->All([], []);
return \Response::json($CategoryResponse, 200);
Laravel 的 Collections
和 PHP 中的一般数组可以关联,这意味着第一个索引可以是不一定为 0 的内容。当转换为JSON 通过 Response::json()
或 return response->json()
,它可以被视为一个 object
而不是 JS 中的数组。要处理这个问题,将 Collection
转换为数组,然后通过 PHP 的 array_values()
函数更改为 indexed
:
$CategoryResponse = $this->iCategory->All([], []);
return response()->json(array_values($CategoryResponse->toArray()), 200);
// Older Laravel syntax
// return \Response::json(array_values($CategoryResponse->toArray()), 200);
在 JSON 响应中,它应该正确显示为以 0
作为第一个索引的数组。
$this->getCachedCategories();
//Above code Stores the data in cache for future use. So, it goes to the database only
//one time and next time pick the data from cache. So far everything is good.
//I have a search criteria which is in the form of array. I filter above cache data based
//upon the search criteria and gets the data.
foreach ($userInputsForFilter as $key => $value) {
$this->Categories = $this->Categories->where($key, $value);
}
这是截图。如果您注意到检索到的数据的第一个索引是 1 而不是 0。实际上第二条记录是在缓存数据被过滤后出现的。
请问为什么搜索缓存数据时会出现这种情况?进入数据库时不会发生这种情况。
数组到JSON代码
$CategoryResponse = $this->iCategory->All([], []);
return \Response::json($CategoryResponse, 200);
Laravel 的 Collections
和 PHP 中的一般数组可以关联,这意味着第一个索引可以是不一定为 0 的内容。当转换为JSON 通过 Response::json()
或 return response->json()
,它可以被视为一个 object
而不是 JS 中的数组。要处理这个问题,将 Collection
转换为数组,然后通过 PHP 的 array_values()
函数更改为 indexed
:
$CategoryResponse = $this->iCategory->All([], []);
return response()->json(array_values($CategoryResponse->toArray()), 200);
// Older Laravel syntax
// return \Response::json(array_values($CategoryResponse->toArray()), 200);
在 JSON 响应中,它应该正确显示为以 0
作为第一个索引的数组。