【发布时间】:2019-11-19 16:26:17
【问题描述】:
我有一个叫get_product_list的laravel API,它接收一些参数,然后使用php内置函数array_filter过滤所有产品并在最后返回。它类似于以下代码。
public function get_product_list(Request $request)
{
//validations
//some code
$all_products = NULL ;
//getting all products in an array
$all_products = $this->get_all_products();
//applying filters
$all_products = array_filter($all_products, function($product) use($request){
$category_flag = true;
if($request->filled('category_id')){
$category_flag = ( $request->category_id == $product['main']->category_id);
}
return $category_flag;
});
return response()->json([
'status' => TRUE,
'products' => $all_products
],200);
}
我在axios中这样调用这个API
axios.post('/get_product_list', {
category_id:2,
})
.then(function (response) {
self.products = response.data.products;
});
问题是当我不将 category_id 传递给 API 时,我收到一个数组,但是当我将它传递给 API 时,我收到的是一个对象而不是一个数组。
我的代码有什么问题?
我不想将接收到的对象转换为axios中的数组,我希望API给我数组。
【问题讨论】:
-
你能显示你的
get_all_products方法的代码吗? -
它肯定会返回一个数组! @罗斯威尔逊
-
哦,好的。凉爽的。我有点想它会返回一个数组,否则
array_filter会抛出一个错误。这不是我问我是否可以看到它的代码的原因。归根结底,除非我知道$all_products的确切值是什么,否则我无法尝试复制该问题并最终尝试为您调试它。
标签: php laravel vue.js axios array-filter