我有两个表:关系表和用户表。
关系表如下所示:' user_one_id',' user_two_id',' status',' action_user_id'
用户表格如下:' id','用户名' 。
我想首先查询关系表并返回所有行的数组,其中' status' column = 0。
然后我想查询users表并返回一组id和用户名,其中' user_one_id'匹配' id'。
到目前为止我的代码:
public function viewRequests()
{
$currentUser = JWTAuth::parseToken()->authenticate();
$friendRequests = DB::table('relationships')
->where('user_two_id', '=', $currentUser->id)
->where('status', '=', '0')
->get();
$requestWithUsername = DB::table('users')
->where('id', '=', $friendRequests->user_one_id)
->get();
return $requestWithUsername;
}
它无法正常工作,我不确定哪种方法最容易达到我想要的输出。如何更改这些查询?
编辑:
在审核响应后,这是工作代码:
$friendRequests = DB::table('users')
->select('users.id','users.username')
->join('relationships', 'relationships.user_one_id','=','users.id')
->where('relationships.status','=',0)
->where('relationships.user_two_id', '=', $currentUser->id)
->get();
答案 0 :(得分:1)
您的SQL似乎是这样的:
SELECT id, username
FROM users
JOIN relationships
ON relationships.user_one_id = id
WHERE relationships.status = 0
然后是Laravel方式:
DB::table('users')
->select('id','username')
->join('relationships', 'relationships.user_one_id','=','id')
->where('relationships.status','=',0)
->get();