从 3 个模型中获取计数有很多关系

Get count from has many relationship from 3 models

我有 3 个模型。

  1. Company
  2. Product
  3. 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();