【问题标题】:Laravel Mysql Select from two tables and join result on a third tableLaravel Mysql 从两个表中选择并在第三个表上连接结果
【发布时间】:2016-10-17 16:36:31
【问题描述】:

我想知道是否可以选择两个表并加入第三个表

我有 3 张桌子:

点赞 -id (PK) -voteOn (FK) - 指向用户 PK -voteBy (FK) - 指向用户 PK -投票(诠释) -voteAdded (Int) - unix 时间戳

投反对票 -id (PK) -voteOn (FK) - 指向用户 PK -voteBy (FK) - 指向用户 PK -投票(小整数) -voteAdded (Int) - unix 时间戳

用户 身份证(PK) 用户名

我现在要做的是 ~ 从表 upvotesdownvotes 中选择所有投票,其中 voteOn = 2 然后加入表 users voteBy orderBy voteAdded Asc

我或多或少想获得对特定用户的所有投票,然后加入用户表,以便我可以获得投票人的用户名

【问题讨论】:

  • 我是否错过了为赞成票和反对票设置单独表格的原因?

标签: php mysql sql laravel


【解决方案1】:

你可以使用 DB 外观来实现这一点,这将生成一个在 db 上触发的 sql 查询

  $users = DB::table("users AS a") 
                   ->select(array("a.id as user_id", "a.username", "b.voteOn as upvote_on",
                "b.vote as upvote", "b.voteAdded as upvote_added","c.voteOn as downvote_on",  "c.vote as downvote",
                  "c.voteAdded as downvote_added"))
                   ->join("upvotes AS b",  "a.id", "=", "b.voteBy")
                   ->join("downvotes AS c",  "a.id", "=", "c.voteBy")
                   ->orderBy("b.voteAdded", "asc") 
                   ->get();

然后你可以使用 foreach 遍历用户

   foreach($users as $user) {
      $user->user_id;
      //use the alias as used in the select chained function 
    } 

应该可以的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    相关资源
    最近更新 更多