浅谈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动态图像的创建
Oct 09 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
php 原生分页
Apr 01 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下几种删除目录的方法总结
2007/08/19 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
Python安装selenium包详细过程
2019/07/23 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
什么是接口(Interface)?
2013/02/01 面试题
最新计算机专业自荐信
2013/10/16 职场文书
英语专业毕业生自荐信范文
2013/12/31 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
管理提升方案
2014/06/04 职场文书
学校师德师风整改方案
2014/10/28 职场文书
电影红河谷观后感
2015/06/11 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书