浅谈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 相关文章推荐
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
PHP如何将XML转成数组
Apr 04 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
Yii2实现同时搜索多个字段的方法
Aug 10 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
Apr 16 PHP
php探针使用原理和技巧讲解
Sep 17 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
javascript的this关键字详解
2019/05/20 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
中软国际Java程序员机试题
2012/08/19 面试题
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
户外活动策划方案
2014/03/12 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python