通过加入 Laravel 获取行数
Getting Count of Rows With Join in Laravel
获取其指定列是另一个 table 的外键的行数的正确方法是什么。这就是我的意思:
我有 2 tables providers
和 products
。提供者 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();
获取其指定列是另一个 table 的外键的行数的正确方法是什么。这就是我的意思:
我有 2 tables providers
和 products
。提供者 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();