mad*_*koy 3 php laravel eloquent
我目前正在尝试在 3 个表之间建立关系。
Users
    uid
    username
Groups
    gid
    groupname
GroupMembers
    uid
    gid
使用 eloquent ORM,如何获取用户的组?
只需要 1 行查询,我就想返回一个 json 回复,例如:(我所属的搜索组...关键字:管理员)
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
| 归档时间: | 
 | 
| 查看次数: | 11781 次 | 
| 最近记录: |