使用 for 循环将项目添加到数组 Laravel
Adding items into array Laravel using for loop
我正在尝试从数据库中获取所有具有 products
的 categories
并将它们推送到另一个数组中。
我有四个 3 categories
,其中两个 products
。
这是我的代码:
$categories = Category::all();
$count = count($categories);
$categoriesWithProducts = array();
for($i = 0; $i < $count; $i++) {
if($categories[$i]->products->count() > 0) {
array_push($categoriesWithProducts, $categories[$i]);
}
return response()->json($categoriesWithProducts);
}
我得到一个只有一项而不是两项的数组。
我哪里错了?
虽然错误很明显(在评论中提到)你可以重写整个事情:
$categories = Category::withCount('products')->get(); // you load count to not make n+1 queries
$categoriesWithProducts = $categories->filter(function($category) {
return $category->products_count > 0
})->values();
return response()->json(categoriesWithProducts);
当然你可以让它更简单:
return response()->json(Category::withCount('products')->get()
->filter(function($category) {
return $category->products_count > 0
})->values()
);
但实际上最好的方法是使用 Eloquent relationships 这样你就可以使用:
return response()->json(Category::has('products')->get());
我正在尝试从数据库中获取所有具有 products
的 categories
并将它们推送到另一个数组中。
我有四个 3 categories
,其中两个 products
。
这是我的代码:
$categories = Category::all();
$count = count($categories);
$categoriesWithProducts = array();
for($i = 0; $i < $count; $i++) {
if($categories[$i]->products->count() > 0) {
array_push($categoriesWithProducts, $categories[$i]);
}
return response()->json($categoriesWithProducts);
}
我得到一个只有一项而不是两项的数组。
我哪里错了?
虽然错误很明显(在评论中提到)你可以重写整个事情:
$categories = Category::withCount('products')->get(); // you load count to not make n+1 queries
$categoriesWithProducts = $categories->filter(function($category) {
return $category->products_count > 0
})->values();
return response()->json(categoriesWithProducts);
当然你可以让它更简单:
return response()->json(Category::withCount('products')->get()
->filter(function($category) {
return $category->products_count > 0
})->values()
);
但实际上最好的方法是使用 Eloquent relationships 这样你就可以使用:
return response()->json(Category::has('products')->get());