2016-08-13 12 views
1

私はLaravelを新しくしました。Laravel 5.2 Auth :: User Foreign Key Join Query

デフォルトのUserテーブルにpermissionという名前の新しい列を追加します。そして、それはPermissionsテーブル(user.permission = permissions.p_id)p_idに関連する外部キーです。

あるユーザーは、アクセス権のグレード(p_id)に属しているが、アクセス許可のグレードは、多くのユーザーに属していたことができます。

[DB FIELDS] 

user 
- ... 
- permission 

permission 
- p_id 
- p_permission 
- p_title 

そして、私の雄弁モデルの定義

コントローラーで
[App\Permission] 

public function user() { 
    return $this->hasMany('App\Permission', 'p_id'); 
} 
[App\User] 

public function permission() { 
    return $this->belongsTo('App\Permission', 'permission', 'p_id'); 
} 

は、どのように私はp_titleまたは他のpermission.*フィールドを照会していますか?私は

echo Auth::User()->permission->p_title; 
echo User::find(1)->permission->p_title; 

の両方を試してみた

はリターンTrying to get property of non-object

そして

echo Auth::User()->with('permission')->get(); 

戻り、すべてのユーザーです。 (私が欲しいのは、ログインしたユーザーです)

Auth::User()には、Auth::User()->p_titleのように外部キーを照会する方法はありますか?

ありがとうございました。

答えて

1

あなたのパーミッションモデルの関係は正しくありません。

[アプリケーション\許可]

public function users() { 
    return $this->hasMany('App\User', 'permission'); 
} 
+0

に私はこのように私のコードを変更しましたが、機能しません。 'Auth :: User() - > permission-> p_title'がまだ返されます '非オブジェクトのプロパティを取得しようとしています ' – Benyi

+0

'tinker'を使ってデバッグしようとしませんか? '$ u = App \ User :: first()'、次に '$ u-> permission'を試してみてください。あなたが何かを得るかどうかを見てください。 – linuxartisan

0

あなたはこれを確認することができますあなたの許可モデル

App/Permission 

protected $table = 'Permission'; 
protected $primaryKey = 'p_id';