【问题标题】:How to combine two sql table in laravel 5.8如何在 laravel 5.8 中合并两个 sql 表
【发布时间】:2020-05-13 03:15:42
【问题描述】:

我正在尝试比较两个表以检查用户数据是否已经存在于另一个表中。我展示了一些他们谈论 whereRaw 的帖子,但细节还不够,我试图运行查询,但没有得到我想要的。

更新 我有两张桌子,一张是两个人之间的挑战

Challenge Table  id,user_one, user_two, data_one, data_two,winner_id

我的第二张桌子是

vote Table id, user_id, battle_id, voted_user

我想检查用户是否已经对该表进行投票,如果是,则跳过该挑战表并向用户显示剩余表数据。

$challenges = DB::table('challenges')->whereRaw([
            ['challenges.user_one', '!=', $uid],
            ['challenges.id', '!=', 'vote.id'],
        ])->orWhereRaw([
            ['challenges.user_one', '!=', $uid],
            ['challenges.id', '!=', 'vote.id'],
        ])->get();

【问题讨论】:

  • 你能发布你遇到的 SQL 错误吗?
  • Challenge 和 Vote 表是如何通过哪个外键连接起来的?
  • 挑战id是battle_id,战斗在user_one和user_two之间 |在 vaotes - user_id 是投票的用户

标签: php mysql sql laravel laravel-5


【解决方案1】:

你可以通过crossJoin实现它

$challenges = DB::table('challenges')->crossJoin('vote')
        ->where('challenges.user_one', '!=', $uid)
        ->where('challenges.id', '!=', 'vote.id')
        ->orWhere('challenges.user_one', '!=', $uid)
        ->orWhere('challenges.id', '!=', 'vote.id')->get();

参考:https://laravel.com/docs/5.8/queries

【讨论】:

  • 加入表使结果无用。没有连接表有没有其他方法可以做到这一点
  • SELECT * FROM table1,table2 实际上只是交叉连接
猜你喜欢
  • 1970-01-01
  • 2015-05-29
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多