$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开始,实际上第二个记录是在缓存数据被过滤之后出现的。
能否请您解释为什么在搜索缓存数据时会发生这种情况?进入数据库时不会发生这种情况。
$CategoryResponse = $this->iCategory->All([], []);
return \Response::json($CategoryResponse, 200);
答案 0 :(得分:1)
Laravel的Collections
和PHP中的数组通常可以关联,这意味着第一个索引可以不一定是0。通过Response::json()
或{{1转换为JSON时}},可以将其视为return response->json()
而不是JS中的数组。要处理此问题,请将object
转换为数组,然后通过PHP的Collection
函数将其更改为indexed
:
array_values()
在JSON响应中,它应显示为正确的数组,并以$CategoryResponse = $this->iCategory->All([], []);
return response()->json(array_values($CategoryResponse->toArray()), 200);
// Older Laravel syntax
// return \Response::json(array_values($CategoryResponse->toArray()), 200);
作为第一个索引。