Laravel:如何从两个表中获取计数?

问题描述 投票:1回答:2

我有两个桌子。

第一张表:

- name_id
- name

第二张表:

- counter_id
- name_id
- counter

并且我通过单击来计算按钮计数(1)。表示如果我单击求和,它将在计数器DB中插入“ 1”最后,我希望结果为

peter 4
sam 3

我的代码是

$data = DB::table('name')
       ->join('counters', 'counters.name_id', '=', 'name.name_id')
       ->select('name.name', 'counters.name_id') 
       ->get();

         return $data;

并且现在得到结果

[
    {
        "name": "peter ",
        "name_id": 1
    },
    {
        "name": "peter ",
        "name_id": 1
    },
    {
        "name": "peter ",
        "name_id": 1
    },
    {
        "name": "sam",
        "name_id": 2
    }
]

laravel
2个回答
0
投票

您可以通过在laravel上使用collection来执行类似的操作。

$data = [
    [
        "name" => "peter ",
        "name_id" => 1
    ],
    [
        "name" => "peter ",
        "name_id" => 1
    ],
    [
        "name" => "peter ",
        "name_id" => 1
    ],
    [
        "name" => "sam",
        "name_id" => 2
    ]
];

collect($data)->groupBy('name_id')->map(function($items) {
  return [
     'name' => $items[0]['name'],
     'total' => count($items)
  ];
})

-1
投票

我以这种方式解决了

        ->join('counters', 'counters.name_id', '=', 'name.name_id')
        ->select('name.name', DB::raw('Count(counters.name_id)'))
        ->groupBy('name.name')
        ->get();      
       ``` 
© www.soinside.com 2019 - 2024. All rights reserved.