【问题标题】:Laravel 5 - compare query from one table to another queryLaravel 5 - 将一个表中的查询与另一个查询进行比较
【发布时间】:2016-05-25 16:59:52
【问题描述】:

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

关系表如下所示:'user_one_id'、'user_two_id'、'status'、'action_user_id'

Users 表如下所示:'id', 'username'.

我想先查询关系表,然后返回一个包含“status”列 = 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();

【问题讨论】:

    标签: php mysql sql laravel eloquent


    【解决方案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();
    

    【讨论】:

    • 我理解逻辑,但我必须对您的代码进行一些调整!在上面的问题中编辑。
    猜你喜欢
    • 2015-12-21
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多