通过加入 Laravel 获取行数

Getting Count of Rows With Join in Laravel

获取其指定列是另一个 table 的外键的行数的正确方法是什么。这就是我的意思:

我有 2 tables providersproducts。提供者 table 有主键 provider_id 并且 table products 通过名称相同的列 provider_id 有一个对 provider_id 的外键引用.我的目的是获取每个供应商的详细信息,包括他们的所有产品,即 products table 中的 provider_id 匹配 providers_id 的所有实例的总数13=] table.

这是我的代码:

$data = DB::table('providers')
            ->join('products', 'products.provider_id', '=', 'providers.provider_id')
            ->select(
                'providers.provider_id AS id',
                'providers.provider_name AS name',
                DB::raw("count(products->where('products.provider_id','=','providers.provider_id')) AS total_products"),
                'providers.claims AS claims',
                'providers.settlements AS settlements')
        ->groupBy('provider')
        ->get();

这似乎不起作用,因为我收到以下错误:

Undefined property: Illuminate\Database\MySqlConnection::$id (View: /var/www/test/app/resources/views/agent/serviceproviders/index.blade.php)

我做错了什么?

问题在于我如何计算行数以及如何对数据进行分组以进行正确计数。我觉得很愚蠢,这太容易了。以下是正确的代码:

$data = DB::table('providers')
            ->join('products', 'products.provider_id', '=', 'providers.provider_id')
            ->select(
                'providers.provider_id AS id',
                'providers.provider_name AS name',
                DB::raw("count(products.provider_id) AS total_products"))
        ->groupBy('providers.provider_id')
        ->get();