浅谈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 GD 图像处理组件的常用函数总结
Apr 28 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
PHP多例模式介绍
Jun 24 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
php递归实现无限分类的方法
Jul 28 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
浅谈PHP中关于foreach使用引用变量的坑
Nov 14 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
php URL验证正则表达式
2011/07/19 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
python解析json实例方法
2013/11/19 Python
python对日志进行处理的实例代码
2018/10/06 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
同学聚会主持词
2014/03/18 职场文书
艺术教育实施方案
2014/05/03 职场文书
治安消防安全责任书
2014/07/23 职场文书
李强感恩观后感
2015/06/17 职场文书
文明上网主题班会
2015/08/14 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python