thinkphp6数据库相关操作
一、多表联合查询
$list = UserModel::where(function (Query $query) { $data = $this->request->param(); $query->where('user_type',2); 。。。。 })->haswhere('UserParams',function(Query $query){
$query->where('elite', 1); 。。。。 })->order("create_time DESC") ->paginate(15);
生成sql SELECT `UserModel`.* FROM `xxxx_user` `UserModel` INNER JOIN `xxxx_user_params` `UserParamsModel` ON `UserModel`.`id`=`UserParamsModel`.`userid` WHERE `UserParamsModel`.`elite` = '1' ORDER BY `create_time` DESC LIMIT 0,15
没有查询条件user_type=2 只有 elite 条件
要先haswere,再where ,where里的条件才有效
$list = UserModel::haswhere('UserParams',function(Query $query){ $query->where('elite', 1); })->where(function (Query $query) { $data = $this->request->param(); $query->where('user_type',2); if (!empty($data['uid'])) { $query->where('id', intval($data['uid'])); } if (!empty($data['keyword'])) { $keyword = $data['keyword']; $query->where('user_login|user_nickname|user_email|mobile', 'like', "%$keyword%"); } })->order("create_time DESC") ->paginate(15);
user表不想返回所有字段怎么办?尤其是ajax请求直接返回查询数据时,不能把密码一起返回
可以这样
hasWhere('userParams', function($query) use($where) { $query->where($where); },'id,UserModel.avatar,user_nickname,sex')
hasWhere 是有第三个参数的,第三个参数可以指定返回字段
如果想返回UserParams 关联模型的字段怎么办??? 查询结果集里循环追加
foreach($users as $user) { $user->userProfile; $user->userParams; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!