Eloquent Count嵌套关系


| Data     | DataChildren   | Category
----------------------------------
|  id      | id             | id
|  name    | data_id        | name
|          | category_id    |
|          | name           |

数据模型:

public function data_children() {
return $this->hasMany(DataChildren::class, 'data_id', 'id');
}

DataChildren模型:

public function category() {
return $this->belongsTo(Category::class, 'category_id', 'id');
}

我想根据Dataid通过DataChildren得到Category的计数。我只是想从数据中获取类别记录,所以结果应该是这样的

name from category | Count of category for Data
-------------------------------------------------
Unpublished        |   1
Published          |   3

我试过使用这个,但返回null

Data::withCount(['category'=> function($query){return $query->groupBy('category_id');}])->find(1);

你需要使用多对多关系

类别模型:

public function datas()
{
return $this->belongsToMany(Data::class, 'data_childerens', 'category_id', 'data_id');
}

然后运行这个Query withCount:

Category::withCount('datas')->get();

Set Data Model:

public function categories()
{
return $this->belongsToMany(Category::class, 'data_childerens', 'data_id', 'data_id');
}

然后运行这个Query With and withCount:

Data::with('categories')->withCount('datas')->get();

最新更新