Eloquent 计算嵌套关系
Eloquent Count nested relationships
| 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');
}
数据子模型:
public function category() {
return $this->belongsTo(Category::class, 'category_id', 'id');
}
我想根据 Data
id 通过 DataChildren
获取 Category
的计数。
我只想从数据中获取类别记录,所以结果应该是这样的
name from category | Count of category for Data
-------------------------------------------------
Unpublished | 1
Published | 3
我试过使用这个但是 return null
Data::withCount(['category'=> function($query){return $query->groupBy('category_id');}])->find(1);
你需要使用many to many关系
在类别模型中:
public function datas()
{
return $this->belongsToMany(Data::class, 'data_childerens', 'category_id', 'data_id');
}
然后 运行 这个查询 withCount :
Category::withCount('datas')->get();
设置数据模型:
public function categories()
{
return $this->belongsToMany(Category::class, 'data_childerens', 'data_id', 'data_id');
}
然后 运行 这个查询 withCount :
Data::with('categories')->withCount('datas')->get();
| 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');
}
数据子模型:
public function category() {
return $this->belongsTo(Category::class, 'category_id', 'id');
}
我想根据 Data
id 通过 DataChildren
获取 Category
的计数。
我只想从数据中获取类别记录,所以结果应该是这样的
name from category | Count of category for Data
-------------------------------------------------
Unpublished | 1
Published | 3
我试过使用这个但是 return null
Data::withCount(['category'=> function($query){return $query->groupBy('category_id');}])->find(1);
你需要使用many to many关系
在类别模型中:
public function datas()
{
return $this->belongsToMany(Data::class, 'data_childerens', 'category_id', 'data_id');
}
然后 运行 这个查询 withCount :
Category::withCount('datas')->get();
设置数据模型:
public function categories()
{
return $this->belongsToMany(Category::class, 'data_childerens', 'data_id', 'data_id');
}
然后 运行 这个查询 withCount :
Data::with('categories')->withCount('datas')->get();