php tp5 复杂sql构造问题

有一个sql语句想用tp5的构造器构造一下,如下

Select * from tab1 where (a=1 and b=1) or (a=2 and b=2) or (a=3 and b=3).....or(a=N and b=N)

注意:当N等于多少,就有多少个or 连接,or的个数是变量,请问如何用Tp5的链式查询查出结果。困扰了我一天了,求大神解答!

在网上查了个例子$res = Db::table('fd_user')->where('sex','eq','男')
->where(function($query){
$query->where('name','like','李%')
->whereOr('age','eq',18);
})
->buildSql();

这样是可以,但是他的whereOr只有一个,我的需求是whereOr是不固定的,可能有一个也可能有两个,怎么破

阅读 3k
1 个回答
    $sqlQuery = DB::table('tab1')->where(['a' => 1, 'b' => 1]);
    $n = 10;
    for ($i = 2; $i <= $n; $i++) {
        $sqlQuery = $sqlQuery->orWhere(function ($query) use ($i) {
            $query->where(['a' => $i, 'b' => $i]);
        });
    }
    return $sqlQuery->toSql();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题