浅谈laravel中的关联查询with的问题


Posted in PHP onOctober 10, 2019

表结构

主表结构:

Create Table

CREATE TABLE `user` (
 `uid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
 `email` varbinary(255) NOT NULL,
 PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=114001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

附表结构:

CREATE TABLE `user_options` (
 `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
 `uid` mediumint(8) unsigned NOT NULL,
 `age` tinyint(3) NOT NULL,
 `sex` tinyint(1) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `options_key` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=114001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

并使用seed插入随机数据10W条

测试

分别建立User,Options模型,并且建立一对一的关系,

代码如下:

User::with(['options'=>function($query){
      $query->where('sex','=','1');
    }])->paginate(15);

laravel的debug监控到的SQL运行如下:

select count(*) as aggregate from `user`
select * from `user` limit 15 offset 0
select * from `user_options` where `user_options`.`uid` in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15') and `sex` = '1'

结论

如果是需要使用附表的过滤做列表筛选,使用with就不是很好了!

使用with的的意思,在确定主信息的时候,罗列符合条件的附表信息,适合单条或者少量主表信息或者主表信息筛选

以上这篇浅谈laravel中的关联查询with的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP系统命令函数使用分析
Jul 05 PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
php输出图像的方法实例分析
Feb 16 PHP
php session的应用详细介绍
Mar 22 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
PDO::_construct讲解
Jan 27 PHP
Yii框架ACF(accessController)简单权限控制操作示例
Apr 26 PHP
PHP中->和=>的含义及使用示例解析
Aug 06 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 #PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 #PHP
asp.net和php的区别点总结
Oct 10 #PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 #PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 #PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 #PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 #PHP
You might like
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python错误处理详解
2014/09/28 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python构建基础的爬虫教学
2018/12/23 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
python numpy数组复制使用实例解析
2020/01/10 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
区域销售经理职责
2013/12/22 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
个人维稳承诺书
2015/05/04 职场文书
色戒观后感
2015/06/12 职场文书
Redis高并发缓存架构性能优化
2022/05/15 Redis