浅谈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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
用PHP将数据导入到Foxmail
Oct 09 PHP
用PHP实现维护文件代码
Jun 14 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
php实现httpclient类示例
Apr 08 PHP
php安装swoole扩展的方法
Mar 19 PHP
php检测文本的编码
Jul 26 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 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中的 == 运算符进行字符串比较
2006/11/26 PHP
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
php生成word并下载代码实例
2019/03/15 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
python执行子进程实现进程间通信的方法
2015/06/02 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
利用python开发app实战的方法
2019/07/09 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
django的model操作汇整详解
2019/07/26 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
中文师范生自荐信
2014/01/30 职场文书
名人演讲稿范文
2014/09/16 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
春节晚会开场白
2015/05/29 职场文书
毕业班工作总结
2015/08/10 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
2019安全宣传标语大全
2019/08/14 职场文书