Получите ресурсы с помощью hasMany через модель, используя BelongsTo - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть следующие модели:

User:
- id
- name

Location:
- id
- name
- region_id

table: user_location
- user_id
_ location_id

Пользователь принадлежит одному местоположению через эту таблицу.У меня также есть другая модель:

Region
- id
- name

Я определил регион hasMany Locations.

С этими отношениями, как я могу определить отношения между пользователем и регионом, какой регион сможет найти всех пользователей?во всех местах, связанных с этим?

<?php 

class User extends Model
{
    public function locations() {
        return $this->belongsToMany('App\Location', 'user_location');
    }
}

class Location extends Model
{
    public function users() {
        return $this->belongsToMany('App\User', 'user_location');
    }

    public function region() {
        return $this->belongsTo('App\Region', 'region_id');
    }
}

class Region extends Model
{
    public function locations() {
        return $this->hasMany('App\Location', 'region_id');
    }

    public function users() {
        // what am I supposed to put in here?
    }
}

1 Ответ

0 голосов
/ 11 сентября 2018

Для этого случая нет родных отношений.

Я создал HasManyThrough отношение для таких ситуаций: Репозиторий на GitHub

После установки вы можете использовать его так:

class Region extends Model {
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function users() {
        return $this->hasManyDeep(User::class, [Location::class, 'user_location']);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...