通过加入Laravel获得行数

时间:2017-10-12 23:53:59

标签: laravel laravel-blade

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

我有2个表providersproducts。 providers表具有主键provider_id,表products通过名为provider_id的列具有对provider_id的外键引用。我的目的是获取每个提供商的详细信息,包括其所有产品,即provider_id表中productsproviders_id表中的providers匹配的所有实例的总数

这是我的代码:

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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