私は私が持っているシナリオで正しく関係を取得するために苦労していますね。laravel 5 - 雄弁関係(パーミッションテーブル)
私は私が得るために探していた結果が、私はどちらかUserモデルを通してレベルの列にレベルテーブルから値を取得したいと思い
manager //through User:: model or Auth::
である3つのテーブル
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 |
|------|-------------|
を持っています。これは私のクラスで持っているものの最新バージョンです...
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))
私は、このインスタンスでリレーションシップがどのように機能するかを正確には理解していませんが、解決策を推測することは望ましくありません。私はそれを理解したい。
ものはレベルテーブルは、許可レベル(ロール)のリストとして機能,,です。私は、他の方法で許可レベルを定義することができると認識していますが、現時点ではこれはすべての設定方法です。
を行うことができ、私はあなたが定義していると思います権限レベルの関係はまったく反対のoそれが何であるべきかf。 'Permission'は' Level'と 'level'' hasMany'' Permission'に属します。 –