0

ユーザー (Users) とグループ (Groups) の 2 つのテーブルがあります。

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

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

次のように表示したいと思います: users.ID, users.username, group.name (1, Bob, secondgroup) そのような SQL ステートメントは機能します:

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

ただし、「FROM」がないため、これをEloquentで書くのに苦労しています。現時点では、JOINS ( http://laravel.com/docs/queries#joins )を使用して、以下の行に沿って何かをしようとしています。

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

現在、これは機能していません-結合は選択の前に来る必要があると思いますが、うまくいきません:(

4

2 に答える 2

1

ここでいくつかのことを混乱させていると思います...

Eloquent低レベルのDB::table('foo')->select()構文と混在しています。Eloquent を使用する場合は、 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();にクエリを使用して作成し、実行することができます。

于 2013-06-21T15:32:04.860 に答える