本文介绍了雄辩的计数嵌套关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

| 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模型:

DataChildren Model:

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

我想通过 DataChildren 根据 Data id获取 Category 的数量.我只想从数据中获取类别记录,所以结果应该像这样

I want to get count of Category based on Data id through DataChildren.I just want to take the Category records from Data so the result should be like this

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

我尝试使用此方法,但返回 null

I've tried using this but return 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');
 }

然后运行此查询 withCount :

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

设置数据模型:

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

然后运行此查询方式并 withCount :

Then run this Query With and withCount :

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

这篇关于雄辩的计数嵌套关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-10 09:53