Laravel 5 中相关产品数量的产品类别列表
Posted
技术标签:
【中文标题】Laravel 5 中相关产品数量的产品类别列表【英文标题】:List of categories of products with the respective quantity of products associated in Laravel 5 【发布时间】:2019-11-24 05:17:16 【问题描述】:我想在 laravel 5 中有一个产品类别列表,其中包含与它们相关联的产品数量(类别),如下所示:
电子产品 (20) 件,手机 (100) 件
预期的 JSON 格式:
"name": "electronic",
"quantity": "20"
,
"name": "cell phones",
"quantity": "100"
,
有人知道如何在 laravel 5 中实现这一点吗?
编辑 现在我的控制器是这样的:
private $categories;
public function __construct(Categories $categories)
$this->categories = $categories;
public function index()
$categories = $this->categories
->withCount('products')
->get();
$data = ['data' => $categories];
return response()->json($data);
在 mu 模型中我有:
public function products()
return $this->hasMany('App\Models\Products')
->selectRaw('category_id, count(*) as total')
->groupBy('category_id');
public function categories()
return $this->hasOne('App\Models\Categories');
它现在返回这些错误:
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.categories_id' in 'where clause' (SQL: select `categories`.*, (select count(*) from `products` where `categories`.`id` = `products`.`categories_id`) as `products_count` from `categories`)"
在我的数据库image of the column
laravel 以复数形式调用我的列,当我将数据库中的列名更改为 categories_id 时它工作正常,但我不知道该怎么做
【问题讨论】:
请提供一些代码。你在哪一方面卡住了? 我已经编辑了添加代码的帖子 我已经通过在模型中指定外键category_id解决了我的问题,谢谢您的评论 【参考方案1】:我通过在模型中指定外键category_id解决了这个问题,Categories模型中的最终代码是:
public function products()
return $this->hasMany('App\Models\Products', 'category_id')
->selectRaw('category_id, count(*) as total')
->groupBy('category_id');
而且效果很好
来自 POSTMAN 的 JSON 响应是:
"id": 18,
"category_name": "electronics",
"description": null,
"icon": "tv",
"created_at": null,
"updated_at": null,
"products_count": 20
如果遇到同样的问题,请参阅that link too
【讨论】:
以上是关于Laravel 5 中相关产品数量的产品类别列表的主要内容,如果未能解决你的问题,请参考以下文章