浅谈laravel中的关联查询with的问题
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-28 20:34:08 浏览: 评论:0
今天小编就为大家分享一篇浅谈laravel中的关联查询with的问题,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。
表结构
主表结构:
- 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的的意思,在确定主信息的时候,罗列符合条件的附表信息,适合单条或者少量主表信息或者主表信息筛选。
Tags: laravel关联查询 with
相关文章
- ·Yii框架关联查询with用法分析(2021-05-01)
- ·Laravel关联模型中过滤结果为空的结果集(has和with区别)(2021-10-31)
- ·laravel withCount 统计关联数量的方法(2021-12-28)
- ·在laravel中使用with实现动态添加where条件(2021-12-29)
- ·laravel ORM关联关系中的 with和whereHas用法(2022-01-08)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)