принадлежит ToMany с 4 столами в Laravel - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть 4 таблицы с отношениями, как на картинке .У меня также есть 2 функции в модели User:

public function getUserSchools(){
    return $this->belongsToMany(Schools::class, 'user_has_schools', 'user_id', 'school_id');
}

public function getUserRoles(){
    return $this->belongsToMany(Roles::class, 'user_has_schools', 'user_id', 'role_id');
}

Они работают нормально, но я хочу объединить их результаты - мне нужно получить школы этого пользователя с его ролью в каждой школе (например: [Начальная школа, учитель], [средняя школа, начальник] и т. Д.).Как я могу достичь этого результата?Может быть, это тривиальный вопрос, но я только начинаю свое приключение с Laravel.:)

1 Ответ

0 голосов
/ 24 апреля 2019

проверьте полиморфные отношения Laravel https://laravel.com/docs/5.8/eloquent-relationships#many-to-many-polymorphic-relations

образец:

class Post extends Model
{
    /**
     * Get all of the tags for the post.
     */
    public function tags()
    {
        return $this->morphToMany('App\Tag', 'taggable');
    }
}

Не берите в голову примеры методов

class Tag extends Model
{

    public function posts()
    {
        return $this->morphedByMany('App\Post', 'taggable');
    }

    public function videos()
    {
        return $this->morphedByMany('App\Video', 'taggable');
    }

    public function links()
    {
        return $this->morphedByMany('App\Links', 'taggable');
    }

    public function forum()
    {
        return $this->morphedByMany('App\Forums', 'taggable');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...