从 3 个模型中获取计数有很多关系
Get count from has many relationship from 3 models
我有 3 个模型。
Company
Product
Offer
一个Company
有很多Products
。
一个Product
有很多Offers
.
我怎样才能得到 Offers
的 number/count 一个 Company
有?
将表格连接在一起,然后找出每家公司的数量:
DB::table('Company')
->join('Product', 'Company.product_id', '=', 'Company.id')
->join('Offer', 'Product.offer_id', '=', 'Offer.id')
->select('Company.id', 'Company.name', DB::raw("count(*) AS num_offers"))
->groupBy('Company.id') // could also group by Company.name, but may not need it
->get();
尝试以下操作:
Offer::whereHas('product', function($query) use ($company_id) {
$query->where('company_id', $company_id);
})->count();
Offer
模型应包含 product
关系 return Product
模型的 Offer
我在很多项目中都遇到过同样的问题。你可以试试这个
$Companies = Company::where('id',$company_id)->whereHas('product', function($query) {
$query->with('offers');
})->get();
因此您将获得 $Companies 作为数组。循环,然后您将获得所有公司的产品和优惠 $Companies[]->product[]->offers[]->count();
作为单个对象$Company->product->offer->count();
我有 3 个模型。
Company
Product
Offer
一个Company
有很多Products
。
一个Product
有很多Offers
.
我怎样才能得到 Offers
的 number/count 一个 Company
有?
将表格连接在一起,然后找出每家公司的数量:
DB::table('Company')
->join('Product', 'Company.product_id', '=', 'Company.id')
->join('Offer', 'Product.offer_id', '=', 'Offer.id')
->select('Company.id', 'Company.name', DB::raw("count(*) AS num_offers"))
->groupBy('Company.id') // could also group by Company.name, but may not need it
->get();
尝试以下操作:
Offer::whereHas('product', function($query) use ($company_id) {
$query->where('company_id', $company_id);
})->count();
Offer
模型应包含 product
关系 return Product
模型的 Offer
我在很多项目中都遇到过同样的问题。你可以试试这个
$Companies = Company::where('id',$company_id)->whereHas('product', function($query) {
$query->with('offers');
})->get();
因此您将获得 $Companies 作为数组。循环,然后您将获得所有公司的产品和优惠 $Companies[]->product[]->offers[]->count();
作为单个对象$Company->product->offer->count();