2013-06-21 3 views
0

사용자 (사용자)와 그룹 (그룹)의 두 가지 테이블이 있습니다.단순한 SQL to Eloquent Query (Laravel)

Users 
    ----------------- 
    id | username | group 
    1 | Bob  | 2 

    Groups 
    ----------------- 
    id | name 
    1 | firstgroup 
    2 | secondgroup 

I 표시 할 것 : users.ID, users.username, group.name (1, 밥, secondgroup) 같은 SQL 문은 이렇게 작동합니다 :

SELECT Users.id, Users.username, Groups.name 
FROM Users 
INNER JOIN 
Groups ON Groups.id = Users.group 

을 그러나, 나는 "FROM"이 없으므로 Eloquent에서 이것을 쓰려고 고군분투합니다. '난 그냥 할 수있는 선택 전에 와서 내가 조인 생각했지만 - 그 순간에 나는 (http://laravel.com/docs/queries#joins)

$users = Users::select('id','username', 'Groups.name')->joins('Groups.id', '=', 'id')->get(); 

지금이 작동하지 않는 조인 사용하여 아래의 라인을 따라 뭔가를하려고 해요 당신이 설득력을 사용할 때 t ... 난 당신이 여기에 몇 가지를 혼동 있다고 생각 :(당신은 낮은 수준의 DB::table('foo')->select() 구문 Eloquent을 혼합하고

답변

1

그것을 밖으로 작동합니다. 나는 당신이 보시기 바랍니다 docs about relationships in Eloquent을보십시오.

당신과 같이 모델을 정의해야합니다 :

class User extends Eloquent { 
    public function group() 
    { 
     return $this->belongsTo('Group', 'group'); 
     // second parameter is necessary because you didnt 
     // name the column "group_id" but simply "group" 
    } 
} 

class Group extends Eloquent { 
    public function users() 
    { 
     return $this->hasMany('User', 'group'); 
    } 
} 

이 모든 당신이 나중에 필요하게 될 수도 조인 설정합니다. 그런 다음 간단하게 User::with('group')->all();을 사용하고 쿼리를 작성하여 실행할 수 있습니다.

+0

group() 함수가 맞습니까? 나는 데이터를 다시 얻는 것 같다.하지만 내 사용자 ID가 1이면 나에게도 ID가 1 인 그룹에 대한 데이터를 돌려 준다! – Alias

+0

귀하의 질문에 따르면 사용자 1은 그룹 1에 있습니다. –

+0

아, 죄송합니다. 사용자는 어떤 그룹 에나있을 수 있습니다 (실제 시나리오가 반영되도록 표가 변경되었습니다). 그래서 나는 모든 사용자를 붙잡고 자신이 속한 그룹을 말하고 싶습니다. 현재 사용자 ID가 그룹 ID가 아닌 그룹 ID와 일치하는 것으로 보입니다. 이 경우 – Alias