gpt4 book ai didi

php - 3个表之间的Laravel模型关系

转载 作者:行者123 更新时间:2023-12-04 02:09:00 25 4
gpt4 key购买 nike

我目前正在尝试在 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

关于php - 3个表之间的Laravel模型关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com