Laravel 5 - 比较从一个表到另一个查询的查询

时间:2016-05-25 16:59:52

标签: php mysql sql laravel eloquent

我有两个表:关系表和用户表。

关系表如下所示:' 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();

1 个答案:

答案 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();