当前位置: 首页 > 知识库问答 >
问题:

在Laravel中使用多个条件联接

爱茂勋
2023-03-14

我正在尝试使用多个条件连接两个表。由于第二个联接条件,以下查询不起作用。

 $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();

共有2个答案

夹谷岳
2023-03-14

您需要关键字join才能使用多个连接条件。不考虑表格。

 $all_update = DB::table('posts as p')
  ->join('cprefs as c','p.qatype', '=', 'c.qatype')
  ->join('cprefs as c2','p.wwide', '=', 'c2.wwide') //second join condition
  ->where('c.user_id', $u_id)
  ->where('p.arank', 1)
  ->get();
严景焕
2023-03-14

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();

但是,只有当连接是内部连接时,这才可以正常工作,在您的情况下,这是正确的
添加多个联接子句的正确方法如下

$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();

就用这个吧。

 类似资料:
  • 在这篇文章之后,如何使用Laravel Eloquent创建多个where子句查询? 我正在尝试插入多个“和”条件: 但我收到这个错误:

  • 问题内容: 可以使用Hibernate标准吗? 问题答案: 我遇到了完全相同的问题,并能够像这样解决它: 注:,和在上面的代码指在属性名,和类,相应地(类具有属性等)。 对于此解决方案,您甚至不需要在中设置和参数。

  • 问题内容: 可以使用Hibernate标准吗? 问题答案: 我遇到了完全相同的问题,并且能够像这样解决它: 注:,和在上面的代码指在属性名,和类,相应地(类具有属性等)。 对于此解决方案,您甚至不需要在中设置和参数。

  • 问题内容: 我正在使用Selenium来测试网站,如果我发现并以多个标准为依据,是否可以正常工作?例如 : 要么 问题答案: 不,不是的。您不能像这样串联/添加选择器。反正这是无效的。但是,您可以这样编写选择器,使其覆盖所有场景并将其与 这应该返回带有标签的元素列表,这些标签具有类名并且具有

  • 问题内容: 我有这个文件: 如果我运行以下更新: 我得到了不好的结果: 这是错误的,因为 “ something”:“ test” 应该在第二个元素中,映射等于2。 如果我将字段 “名称” 更改为 “ a” 并运行相同的更新,则得到正确的结果: 现在您可以看到 “ something”:“ test” 在正确的位置(第二个事件)。这是因为我在Mongo中使用了 “名称” 而 “名称” 是某种保留关

  • 问题内容: 我有两个实体:和。我正在使用Hibernate 3.6。 如何使用休眠标准实现这一目标,最重要的是,我必须将其用于分页。 而“我的道”如下所示以显示jqgrid中的“问题”列表 公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ 对于简短的解释,请参考此问题,如何使用struts2-jqgrid插件在jqgrid