2016-08-22 5 views
0

이전에 나는 늪지 표준 PHP와 협력하여 최근에 Laravel로 옮겼습니다. 내가 이해할 수없는 한 가지는 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

변화를 hasOne의'열망 로딩을 시도 ('앱 \ 역할', 'ID를' 'ROLE_ID');'있지만, 사실 당신은 단지를 키를 ommit 수 있습니다 웅변은 당신의 경우에 그들을 맞을 것입니다. –

+0

역할과 사용자 (1-1,1-n, n-n) 사이에 원하는 관계를 말해주십시오. 나는 예제를 줄 것이다 – KmasterYC

+0

'belongsTo ('App \ Role')'을'role()'관계에 사용할 것이다. 이것은 일대 다 관계가 _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

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

만약 내가 같은 이름의 컬럼을 가지고 있다면, 나는 이것을 어떻게 구별 할 것인가? –