Как рассчитать отношение hasMany второго уровня через первый уровень hasMAny в laravel - PullRequest
1 голос
/ 27 января 2020

У меня есть отношения как building hasMany floors и floor hasMany 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');
    }

Все, что я хочу, это получить количество единиц в соответствии со зданием.

1 Ответ

3 голосов
/ 27 января 2020

Поместите эту функцию в модель здания:

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

Тогда вы можете легко сделать:

$building->units()->count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...