如何在 laravel 5.8 中合并两个 sql 表
Posted
技术标签:
【中文标题】如何在 laravel 5.8 中合并两个 sql 表【英文标题】:How to combine two sql table in laravel 5.8 【发布时间】: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 是投票的用户 【参考方案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 实际上只是交叉连接以上是关于如何在 laravel 5.8 中合并两个 sql 表的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.8:如何将两个参数传递给 Event 和 Listener
Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误