我正在尝试在我的Web应用程序中处理多对多的关系。我有一个名为groups和table的表,称为users。
许多用户可以在许多组中,并且许多组可以拥有许多用户。即可以有无限量的用户和群组,用户可以根据自己的意愿属于多个群组。
我创建了一个成功的数据透视表,我的模型看起来像这样。
user.php的
<?php
类用户扩展\ 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
答案 0 :(得分:3)
听起来你想要一个由模型组成的对象,附加到它的关系 - 称为&#34;渴望加载&#34;在laravel。有一种语法:
Group::find($id)->with('users')->first() //or
Group::with('users')->get() //etc.