2013-06-21 3 views
0

У меня есть две таблицы: пользователи (пользователи) и группы (группы).Простой SQL-запрос (Laravel)

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

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

Я хотел бы показать: 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 

Однако я «Я пытаюсь написать это в« Красноречии », так как нет« ОТ ». На данный момент я собираюсь что-то вдоль линий ниже, используя JOINS (http://laravel.com/docs/queries#joins)

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

Сейчас это не работает - я думаю, что присоединяется еще впереди до выбора, но я просто не могу» т работать его :(

ответ

1

Я думаю, ты путаешь кое-что здесь ...

вы смесительный Eloquent с нижним уровнем DB::table('foo')->select() синтаксиса. Если вы хотите использовать красноречив я предлагаю вам см. 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() верна? Кажется, я возвращаю данные, но если мой идентификатор пользователя равен 1, он возвращает мне данные для группы с идентификатором одного! – Alias

+0

В соответствии с вашим вопросом пользователь 1 находится в группе 1. –

+0

Ах, извините, пользователь может быть в любой группе (изменил таблицу, чтобы отразить то, что представляет собой реальный сценарий). Поэтому я хотел бы захватить всех своих пользователей, а затем сказать, в какой группе они находятся. В настоящее время похоже, что мой идентификатор пользователя соответствует идентификатору группы, а не группе моих пользователей, к идентификатору группы. – Alias