使用for循环将项目添加到Laravel数组中

时间:2018-09-19 12:10:55

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

我正在尝试从数据库中获取所有具有categories的{​​{1}}并将其推入另一个数组。

我有四个3 products,其中两个有categories

这是我的代码:

products

我得到的数组只有一项而不是两项。

我要去哪里错了?

1 个答案:

答案 0 :(得分:2)

尽管错误很明显(在注释中提到),但是您可以重写整个内容:

$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());