我从我的Animals表中获取数据,该表与Categories表格有关系。我的问题是,我需要计算每个类别注册了多少产品。
在Stackoverflow上搜索时,我开始使用下面的代码,返回每个类别的动物数量([Emall,quantity](。
$data = DB::table('animals')
->select(
DB::raw('category_id as category'),
DB::raw('count(*) as number'))
->groupBy('category')
->get();
$array[] = ['Name', 'Quantity'];
foreach($data as $key => $value)
{
$array[++$key] = [$value->category, $value->number];
}
$cat = json_encode($array);
dd($cat);
使用"dd",我看到下面的数据是正确的,但category_id即将到来,我不确定如何获取该id并为该id放置类别名称。
"[["Category","Quantity"],[1,10],[2,14],[3,30],[4,26],[5,1]]"
示例:[2,14]这是指类别_id 2,其名称为:哺乳动物。因此,我将有14只动物登记在哺乳动物类别中。
我希望结果是这样的:
"[["Category","Quantity"],[birds,10],[mammals,14],[reptiles,30],[amphibians ,26],[fish,1]]"
如何处理与类别名称相关的id?
加入您的类别表并从中获取名称,我想它应该看起来像:
$data = DB::table('animals')
->join('category', 'animals.category_id', '=', 'category.id')
->select(
DB::raw('category.id as category_id'),
DB::raw('category.name as category_name'),
DB::raw('count(*) as number'))
->groupBy('category')
->get();
更多关于加入
您可以使用模型中的方法"withCount",它可以帮助您计算关系的结果数量
$posts = AppPost::withCount('comments')->get();
foreach ($posts as $post) {
echo $post->comments_count;
}
请参阅文档https://laravel.com/docs/7.x/eloquent-relationships#counting-相关型号