获取相关表之间对象的数量和名称



我从我的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-相关型号

相关内容

  • 没有找到相关文章

最新更新