浅谈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下的权限算法的实现
Apr 28 PHP
PHP 多进程 解决难题
Jun 22 PHP
Views rows style模板重写代码
May 16 PHP
php中如何防止表单的重复提交
Aug 02 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
Nov 15 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 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
isset和empty的区别
2007/01/15 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
JavaScript触发器详解
2007/03/10 Javascript
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
Vue学习之常用指令实例详解
2020/01/06 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
django 模型字段设置默认值代码
2020/07/15 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
军训自我鉴定
2013/12/14 职场文书
聚美优品的广告词
2014/03/14 职场文书
年终奖发放方案
2014/06/02 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
服务器间如何实现文件共享
2022/05/20 Servers