浅谈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中文URL编解码(urlencode()rawurlencode()
Jul 03 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
CodeIgniter生成静态页的方法
May 17 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
PHP实现简易blog的制作
Oct 24 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 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 学习路线与时间表
2010/02/21 PHP
php中apc缓存使用示例
2013/12/25 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
连锁酒店店长职责范本
2014/02/13 职场文书
爱牙日活动总结
2014/08/29 职场文书
社区务虚会发言材料
2014/10/20 职场文书
入团申请书格式
2019/06/20 职场文书