如何使用 laravel 使用 CONCAT 和 COUNT 从数据库中获取

how to fetch from db with laravel using CONCAT and COUNT

在数据库中我有 table 用户 这样的:

// id // name  // street  // house
--------------------------
// 1 // name1  // street1 // 1
// 2 // name2  // street1 // 1
// 3 // name3  // street1 // 1
// 4 // name4  // street2 // 2
// 5 // name5  // street3 // 3
// 6 // name6  // street4 // 4
// 7 // name7  // street5 // 5

我需要做出选择,我将获得 完整地址具有该地址 的记录数(按降序排列) users_ids 数组中的用户。结果应如下所示:

 address     number
'street1 1'   3
'street2 2'   1
'street3 3'   1
'street4 4'   1
'street5 5'   1

laravel 我使用查询:

        $recordsByAddresses = DB::table('users')
            ->whereIn('id', $users_ids)
            ->select(DB::raw("CONCAT(street, ' ', house) AS address"), DB::raw("COUNT(CONCAT(street, ' ', house)) AS number"))
            ->orderBy('number', 'desc')
            ->get();

结果我只得到一个第一个地址和所有地址的数量:

 address     number
'street1 1'   7

未经测试,但这可能有效:

$recordsByAddresses = DB::table('users')
    ->whereIn('id', $userIds)
    ->select(
        DB::raw('CONCAT(street, " ", house) AS address'),
        DB::raw('count(*) as total')
    )
    ->groupBy('address')
    ->orderBy('total', 'desc')
    ->get();