tp5框架的Db::name查询语句问题

我想在 user 表中获取 三个字段有4的数据,应该怎么写

QQ截图20200101210150.jpg

我目前的写法不知道是不是不正确还是本身不支持这种查询,只能一次查询一个条件,三个条件以前查询结果没有数据。

$where = [];
$user_id =  4;
$page = 1;
$limit = 20;

$where['user_pid'] = $user_id;
// $where['user_pid_2'] = $user_id;
// $where['user_pid_3'] = $user_id;
            
$list = Db::name('User')->where($where)->order($order)->page($page)->limit($limit)->select();
阅读 6.1k
3 个回答

你上述写法没结果是因为你的条件组合是 AND 而不是 OR ,

方法一

$list = Db::name('User')
        ->where('user_pid', 4)
        ->whereOr('user_pid2', 4)
        ->whereOr('user_pid3', 4)
        ->order($order)
        ->page($page)
        ->limit($limit)
        ->select();

方法二

$list = Db::name('User')
        ->where('user_pid|user_pid2|user_pid3', 4)
        ->order($order)
        ->page($page)
        ->limit($limit)
        ->select();

你这样是查三个字段都等于 4 的记录。
我记得 tp5 好像有这样的写法,where("字段1|字段2|字段3", 4)
或者 whereOr

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题