首页 > 解决方案 > 在 laravel 中有 4 个表的 belongsToMany

问题描述

我有 4 个表,它们的关系如图所示。我在用户模型中还有 2 个功能:

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 进行冒险。:)

标签: phpmysqllaraveleloquent

解决方案


查看 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');
    }
}

推荐阅读