[英]Laravel Model Relations between 3 tables
我目前正在尝试在3个表之间建立关系。
Users
uid
username
Groups
gid
groupname
GroupMembers
uid
gid
使用雄辩的ORM,如何获得用户组?
仅用1行查询,我想返回一个json答复,例如:(我是...的成员的搜索组...关键字:Admin)
Status 200
User uid 1
username mrwootwoot
Groups
{
gid 1
groupname administrators
}
{
gid 2
groupname wadmin
}
到目前为止,我得到的是:
$joined_networks = User::whereHas('groups', function($q)
{
$q->where('is_blocked', '=', 0)->where('name','like',"%admin%");
})->with('groups')->where('uid', $user_id)->get();
(...)
return Response::json(array(
'status' => 200,
'user' => $joined_networks->toArray()
));
这部分代码是为了找到用户所在的组,而该用户所在的组未被阻止。
更新
$joined = User::with('group')->where('uid', $user_id)->get();
return Response::json(array(
'status' => 200,
'results' => $joined
));
和我的用户模型:
public function group()
{
return $this->hasManyThrough('Group', 'GroupMembers', 'uid', 'gid');
}
现在它什么也没返回
{
"status": 200,
"results": {
}
}
更新
$user = User::find($user_id);
$user_groups = $user->groups();
return Response::json(array(
'status' => 200,
'results' => $user_groups
));
但仍与上述相同,未返回任何结果。
更新这是输出错误。 $ user_groups-> toArray()是正确的。 现在运作良好。
这样的事情怎么样?
在用户模型中
public function groups()
{
return $this->hasManyThrough('groups', 'GroupMembers', 'uid', 'id');
}
在组模型中放置(不确定是否有必要
public function users()
{
return $this->hasMany('GroupMembers', 'gid', 'id);
}
然后让团体使用
return $this->user->groups
我是从laravel文档中获得的,网址为http://laravel.com/docs/eloquent#has-many-through
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.