浅谈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 相关文章推荐
深入了解php4(2)--重访过去
Oct 09 PHP
一个PHP+MSSQL分页的例子
Oct 09 PHP
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 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中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
深入理解Python3 内置函数大全
2017/11/23 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
python标识符命名规范原理解析
2020/01/10 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
遗失证明范文
2015/06/19 职场文书
商业计划书范文
2019/04/24 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
python实现简单的井字棋
2021/05/26 Python
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL