在laravel中有4个表

时间:2019-04-21 16:48:50

标签: php mysql laravel eloquent

我有4个表,它们之间的关系类似于picture。 我在用户模型中也有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开始冒险。 :)

1 个答案:

答案 0 :(得分:0)

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