浅谈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中使用Oracle数据库(3)
Oct 09 PHP
?生?D片??C字串
Dec 06 PHP
PHP数组实例总结与说明
Aug 23 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
Feb 02 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
PHP生成压缩文件实例
2015/02/07 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
JavaScript 创建对象
2009/07/17 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python实现简易Web爬虫详解
2018/01/03 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
python怎么判断素数
2020/07/01 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
大学生简历的个人自我评价
2013/12/04 职场文书
初二生物教学反思
2014/02/03 职场文书
门市房租房协议书
2014/12/04 职场文书
大学生求职自荐信
2015/03/24 职场文书
个人更名证明
2015/06/23 职场文书
心理健康教育主题班会
2015/08/13 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
Python实现生成bmp图像的方法
2021/06/13 Python