首页 文章

Laravel多对多的关系

提问于
浏览
0

我正在尝试在我的Web应用程序中处理多对多的关系 . 我有一个名为groups和table的表叫做users .

许多用户可以在许多组中,并且许多组可以拥有许多用户 . 即,可以有无限量的用户和组,并且用户可以属于他们希望的任意数量的组 .

我创建了一个成功的数据透视表,我的模型看起来像这样 .

user.php的

<?php

class User extends \ Eloquent {

protected $fillable = [];

protected $table = 'user';

public function groups()
{
    return $this->belongsToMany('Group');
}

}

Group.php

class Group extends \ Eloquent {

protected $fillable = [];

public function users()
{
    return $this->belongsToMany('User');
}

}

我正试图掌握Eloquent ORM,我正在做以下事情,

public function get($id)
{

    //dd(Activity::log());
    $group = Group::find($id);

    return $group->users;

}

这将返回如下所示的结果,

[
{
    "id": "1",
    "firstname": "User",
    "surname": "One",
    "email": "email@domain.com",
    "password": "password",
    "remember_token": null,
    "created_at": "-0001-11-30 00:00:00",
    "updated_at": "-0001-11-30 00:00:00",
    "pivot": {
        "group_id": "1",
        "user_id": "1"
    }
},
{
    "id": "2",
    "firstname": "User",
    "surname": "Two",
    "email": "email@domain.com",
    "password": "password",
    "remember_token": null,
    "created_at": "-0001-11-30 00:00:00",
    "updated_at": "-0001-11-30 00:00:00",
    "pivot": {
        "group_id": "1",
        "user_id": "2"
    }
}

]

这不是我想要的,我希望我能得到更明确的东西,意味着返回的行包括组名等,以及用户详细信息 .

要获取组详细信息,我可以在 get() 函数中切换查询,然后返回结果中的数据透视对象将成为用户详细信息 . 为了获得用户数据,我需要对该数据运行进一步的查询 .

基本上我希望从长远来看输出的是,

Group Name 1
---------------------------------
Members
---------------------------------
    User One
    User Two
    User Five
    User Six
    User Ten
    User Nineteen

1 回答

  • 2

    听起来你想要一个由模型组成的对象,附加到它的关系 - 在laravel中称为“渴望加载” . 有一个语法:

    Group::find($id)->with('users')->first() //or
    Group::with('users')->get() //etc.
    

    点击此处查看更多详情:http://laravel.com/docs/eloquent#eager-loading

相关问题