在缓存数据中搜索给出数组第一索引1

时间:2019-06-27 19:43:11

标签: php laravel laravel-5 laravel-5.7 laravel-5.8

$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开始,实际上第二个记录是在缓存数据被过滤之后出现的。

enter image description here

能否请您解释为什么在搜索缓存数据时会发生这种情况?进入数据库时​​不会发生这种情况。

数组为JSON代码

$CategoryResponse = $this->iCategory->All([], []);
return \Response::json($CategoryResponse, 200);

1 个答案:

答案 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); 作为第一个索引。