我正在尝试在我的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 回答
听起来你想要一个由模型组成的对象,附加到它的关系 - 在laravel中称为“渴望加载” . 有一个语法:
点击此处查看更多详情:http://laravel.com/docs/eloquent#eager-loading