Laravel关系将3个表连接到一个数据透视表

时间:2016-12-02 09:15:03

标签: php laravel eloquent pivot-table laravel-5.3

我有一个应用程序,用户可以在不同的网站上拥有不同的角色。我创建了一个数据透视表user_access_levels,其中包含iduser_idsite_idaccess_level_id。首先,我在hasMany模型中为UserAccessLevel创建了User关系,并且我能够使用此功能来规范用户可以访问的内容

@if(Auth::user()->userAccessLevels[0]['access_level_id'] == '1')@endif

但我已经意识到用户只限制用户而非网站。

因此,我将User模型中的关系更改为belongsToMany,现在将其连接到AccessLevel模型。 Laravel能够获取枢轴,我可以看到用户拥有的多个访问级别。如果我做

dd(Auth::user()->userAccessLevels);

我可以看到访问级别如下:

    Collection {#254 ▼
        #items: array:3 [▼
            0 => UserAccessLevel {#255 ▶}
            1 => UserAccessLevel {#256 ▶}
            2 => UserAccessLevel {#257 ▶}
        ]
    }

我需要的是一种访问当前用户与当前站点的特定记录的方法。基本上我想要的是:假设 4 记录 A,B,C,D 以及具有 1访问权限的用户只能访问记录 A和B ,有权访问 2 的用户可以访问 A,B和C 以及有权访问的用户 3 可以访问所有记录。然后我有一个名为 John 的用户,可以 1 访问 网站 以及 3 访问 网站II 。如果john访问 网站 ,我如何确保他只能访问记录A和B,但如果他访问 site II < / strong>他可以访问所有记录。

我目前的做法是,它为所有网站的用户使用最高访问级别。

0 个答案:

没有答案