php - 在 Laravel 中加入多个条件
问题描述
我正在尝试使用多个条件连接两个表。由于第二个连接条件,以下查询不起作用。
$all_update = DB::table('posts as p')
->join('cprefs as c','p.qatype', '=', 'c.qatype')
->where('c.wwide', '=', 'p.wwide') //second join condition
->where('c.user_id', $u_id)
->where('p.arank', 1)
->get();
解决方案
where()
函数期望最后一个参数是您传入列名的参数
。
要比较两列,您应该使用该whereColumn
方法。
考虑到这一点,您还可以编写如下代码:
$all_update = DB::table('posts as p')
->join('cprefs as c','p.qatype', '=', 'c.qatype')
->whereColumn('c.wwide', '=', 'p.wwide') //second join condition
->where('c.user_id', $u_id)
->where('p.arank', 1)
->get();
但是,只有在您的情况下,连接是正确的,这才能正常工作INNER JOIN
。
添加多个连接子句的正确方法如下
$all_update = DB::table('posts as p')
->join('cprefs as c', function($q) {
$q->on('p.qatype', '=', 'c.qatype')
->on('c.wwide', '=', 'p.wwide'); //second join condition
})
->where('c.user_id', $u_id)
->where('p.arank', 1)
->get();
就用这个吧。
推荐阅读
- bash - 打印文件中匹配模式的所有实例
- azure - Getting users from MS Graph API with a $filter causes 403 for some users
- microsoft-graph-api - 更改计划的所有者/组 - 缺少所需的权限
- javascript - 如何禁用 Plotly-Object 的右键单击?
- mongodb - MongoDB 集群 - CSRS 无法启动
- excel - 检查值是否出现在不同的工作表中
- scala - 播放框架 Redirect.withSession("key" -> value) 未在请求中设置映射
- r - R中跨组的计数组合
- c - 在 C 编程中使用指针打印字符串时出现问题
- python - 在python中向量化一个6 for循环累积和