浅谈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如何得到当前页和上一页的地址?
Nov 27 PHP
PHP 各种排序算法实现代码
Aug 20 PHP
用PHP查询搜索引擎排名位置的代码
Jan 05 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
php代码审计比较有意思的例子
May 07 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
php微信开发之百度天气预报
Nov 18 PHP
php接口技术实例详解
Dec 07 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP7中I/O模型内核剖析详解
Apr 14 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函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
使用Python对MySQL数据操作
2017/04/06 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
python numpy库np.percentile用法说明
2020/06/08 Python
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
EJB的几种类型
2012/08/15 面试题
高三自我鉴定范文
2013/10/19 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
Pandas数据类型之category的用法
2021/06/28 Python