获取在Laravel中使用联接的行数

获取在Laravel中使用联接的行数,laravel,laravel-blade,Laravel,Laravel Blade,获取指定列为另一个表外键的行数的正确方法是什么。我的意思是: 我有两个表和产品。providers表具有主键provider_id,表products通过名为provider_id的列具有对provider_id的外键引用。我的目的是获取每个provider的详细信息,包括其所有产品,这是products表中的provider_id与providers表中的providers_id匹配的所有实例的总和 这是我的密码: $data = DB::table('providers')

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

我有两个表和产品。providers表具有主键provider_id,表products通过名为provider_id的列具有对provider_id的外键引用。我的目的是获取每个provider的详细信息,包括其所有产品,这是products表中的provider_id与providers表中的providers_id匹配的所有实例的总和

这是我的密码:

$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();

感谢您的更正@Oluwafemi Sule。可能与products.id有冲突,为什么您在任何地方都不使用别名呢?@AnarBayramov没有products.id。这两个表之间的共同点是providers表中的主键providers.provider\u id是的,我将列provider\u id命名为provider\u id,它也自动递增,而不是人们通常使用的普通id。我发现了问题并进行了分类,我将发布正确的代码。