浅谈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将数据库中的电话号码读取出来并生成图片
Aug 31 PHP
一个简单且很好用的php分页类
Oct 26 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
php简单获取文件扩展名的方法
Mar 24 PHP
微信接口生成带参数的二维码
Jul 31 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
php递归函数怎么用才有效
Feb 24 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
PHP children()函数讲解
Feb 03 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
Python写的英文字符大小写转换代码示例
2015/03/06 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python动态加载包的方法小结
2016/04/18 Python
python字典的常用操作方法小结
2016/05/16 Python
python列表使用实现名字管理系统
2019/01/30 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
2016国庆节活动宣传语
2015/11/25 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js