【发布时间】:2017-05-07 06:33:42
【问题描述】:
在 Laravel 5.3.26 中,是否可以根据该关系的列对 withCount 的结果进行分组?例如如下:
$brands = \App\Models\Brand::withCount([ 'products' => function ($query) {
$query->groupBy('extra_attribute');
} ])
->get();
这段特定的代码返回一个空集合。
也许我只是没有在文档中找到正确的位置,或者没有正确使用谷歌搜索,但我找不到关于这个特定场景的任何信息。
有人能给我指出正确的方向吗?
非常感谢!
编辑:目前我似乎已经解决了这个问题:
$brands = \App\Models\Brand::with([ 'products' => function ($query) {
$query->select('brand_id', 'extra_attribute')
->selectRaw('COUNT(*) AS products_count')
->groupBy('extra_attribute');
} ]);
并能够通过$brand->products->sum('products_count') 之类的方式获取总数。
感觉非常脏,而且可能是。这真的是唯一的方法吗?
【问题讨论】:
标签: php mysql laravel join eloquent