获取指定列是另一个表的外键的行数的正确方法是什么。这就是我的意思:
我有2个表providers
和products
。 providers表具有主键provider_id
,表products
通过名为provider_id
的列具有对provider_id
的外键引用。我的目的是获取每个提供商的详细信息,包括其所有产品,即provider_id
表中products
与providers_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)
我做错了什么?
答案 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();