我想我正努力在我的场景中正确地获得关系。laravel 5 - 雄辩的关系(权限表)
我有三个表
Table: users
| id | username |
----------------------
| 1 | pluto |
|------|-------------|
Table: permissions
| id | user_id | level_id | app_id |
--------------------------------------------------
| 1 | 1 | 2 | 9 |
|------|-------------|--------------|------------|
Table: levels
| id | level |
----------------------
| 1 | admin |
|------|-------------|
| 2 | manager |
|------|-------------|
| 3 | editor |
|------|-------------|
我希望得到的结果是
manager //through User:: model or Auth::
我想无论是通过用户模型得到的水平表水平列中的值。这是我在我的课上的最后一个版本...
class User extends Authenticatable
{
public function permissions()
{
return $this->hasOne('App\Permissions');
}
}
class Permissions extends Model
{
public function user()
{
return $this->hasMany('App\User');
}
public function levels()
{
return $this->hasMany('App\Levels');
}
}
class Levels extends Model
{
public function permissions()
{
return $this->belongsTo('Modules\Ecosystem\Entities\permissions');
}
}
在控制器中使用此功能我能够从权限表中检索值。但是我无法从水平表中的值...
$user = User::with('permissions')->find(Auth::user()->id);
但是我不能当我尝试这从各级表中获取值...
$user = User::with('permissions.levels')->find(Auth::user()->id);
产生一个错误:
Column not found: 1054 Unknown column 'levels.permissions_id' in 'where clause' (SQL: select * from `levels` where `levels`.`permissions_id` in (1))
据我所知,我并不完全理解在这种情况下关系是如何工作的,但我不想仅仅猜测解决方案。我想了解它。
事情是,级别表只用作权限级别(角色)的列表。我承认我可以用其他方式定义权限级别,但目前这是一切设置的方式。
我想您所定义权限级别关系完全相反f它应该是什么。 “权限”属于“级别”和“级别”具有许多“权限”。 –