2
我目前正在嘗試使3個表格之間的關係。Laravel模型3個表格之間的關係
Users
uid
username
Groups
gid
groupname
GroupMembers
uid
gid
憑藉雄辯的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()是正確的。現在運作良好。
更新了我的答案... – madziikoy
上面的解決方案並不是真正的雄辯關係的最佳解決方案。請按照文檔:https://laravel.com/docs/5.4/eloquent-relationships#many-to-many –