首页 > 解决方案 > 如何通过 laravel 中的第一级 hasMANy 获取第二级 hasMany 关系的计数

问题描述

building我与hasManyfloorsfloorhasMany有关系units。我想获得每栋建筑的单位数。

我可以很容易地获得楼层数:

$building = Building::findOrFail($id);
$building->floors()->count();

但是,我无法获得单位数:

$building = Building::findOrFail($id);
$building->floors()->units()->count();

我的雄辩关系如下:

Building
--------
    public function floors()
    {
        return $this->hasMany('App\Models\Floor');
    }
Floor
--------
    public function units()
    {
        return $this->hasMany('App\Models\Unit');
    }

我想要的只是根据建筑物计算单元数。

标签: laravel

解决方案


将此功能放入建筑模型中:

    public function units()
    {
        return $this->hasManyThrough('App\Models\Unit', 'App\Models\Floor');
    }

然后你可以很容易地做到:

$building->units()->count();

推荐阅读