2016-08-22 5 views
0

以前は私はbogの標準PHPで作業していましたが、最近Laravelに移行しました。私が理解できない1つのことは、Laravel EloquentのSQLクエリです。LaravelのEloquentの理解

例えば、私はロールユーザーテーブルを持っています。ロールテーブルには、のロールとIDが個あります。ユーザーテーブルには、ユーザーのロールを参照するrole_idと同様に、さまざまなユーザーの詳細が含まれています。

私は私のユーザーモデルで試してみましたが私は私のロールモデルで試してみましたが何

public function role() 
{ 
    // return $this->hasOne('App\Phone', 'foreign_key', 'local_key'); 
    return $this->hasOne('App\Role', 'id', 'role_id'); 
} 

コントローラで次に
public function users() 
{ 
    return $this->hasMany('App\User', 'role_id', 'id'); 
} 

public function index() 
{ 
    $var = User::find()->role->get(); 

    return view('article', 
     array(
     'var' => $var 
     )); 
} 

しかし、今私は普通のPHPのように両方のテーブルのフィールドにアクセスしますか?私はむしろ標準のSQLを使用するが、このフレームワークを正しく学習しようとしている。

アドバイスはありますか?

+1

変更、それを試してみてください( 'アプリケーション\役割を'、 'ROLE_ID'、 'ID');'、実際には、あなたは鍵をちょうどOMMITことができ、雄弁は、あなたの場合には正しいと思います。 –

+0

役割とユーザー(1-1,1-n、n-n)の間でどのような関係が必要か教えてください。私は例を与えます – KmasterYC

+0

'(role)' 'のために' belongsTo( 'App \ Role') 'を使用します。 これは、1対多の関係が_many_側でモデル化される方法です。 –

答えて

0

雄弁なモデル属性を使用してテーブルフィールドにアクセスできます。あなたはnameなどの分野を持っている場合は

emailあなたが本当に関係上get()メソッドを呼び出す必要はありません

$user = User::find(1); 

$name = $user->name; 
$email = $user->email; 

$roleName = $user->role->name; 

ノートのようにそれらを取得することができます。アクセスすると自動的に呼び出されます。

この問題では、Laravel docsが非常に役に立ちます。 Laravel 5.2 Eloquent: Getting StartedLaravel 5.2 Eloquent: Relationships

0

積極的なロードで `hasOneのに

$var = User::with('role')->find($userId)->get(); 
+0

このようにしてforeachループを使用すると、同じ名前の列がある場合、どのように2つを区別できますか? –