1、在普通的关联查询下,我们循环数据列表会执行n+1次sql查询

$list = UserModel::select([19, 20, 21]);
foreach ($list as $user) {dump($user->profile); }

2、采用关联预载入的方式,会执行两次查询

$list=Students::with(['stumenu'])->select([1,2,3]);
foreach($list as $user){dump($user->stumenu);
}

3、关联预载入减少了查询次数提高了性能,但是不支持多次调用
4、如果主表关联了多个附表,都要进行预载入,可以传入多个模型方法

$list=Students::field('id','username')->with(['stumenu'=>function ($query){$query->filed('user_id,sex');
])->dump($user->stumenu.$user->sex);
}

5、如果想要在关联模型实现链式操作,可以使用闭包,比如添加->field()

$user = Students::field('id,username')->with(['profile'=>function ($query) {
$query->field('user_id, hobby');
}])->select([19,20,21]);

6、关联预载入还提供了一个延迟预载入,就是先执行select()再load()载入

$list = UserModel::select([19, 20, 21]);
$list->load(['profile']);
foreach ($list as $user) {
dump($user->profile
);
}

thinkphp6.0模型篇之关联预载入相关推荐

  1. thinkphp6.0模型篇之关联模型

    一.关联模型定义 1.关联模型就是将表与表之间进行关联和对象化,更高效的操作数据 2.创建两个表的空模型,在含有主键的表中关联另一个表 public function stumenu(){//hasO ...

  2. thinkphp5 关联预载入怎么用

    最近有使用TP开发.对->with和->withJoin这样的关联预载入感到不解,现记录总结如下: 关联查询的预查询载入功能,解决了性能与查询的之间的最优化选择问题,主要解决了N+1次查询 ...

  3. thinkphp5.1嵌套关联预载入的写法

    2019独角兽企业重金招聘Python工程师标准>>> 关于thinkphp5的嵌套关联预载入的写法,thinkphp5.1完全开发手册上写着: 也可以支持嵌套预载入,例如: $li ...

  4. php模型分页代码,ThinkPHP6.0模型关联分页

    模型关联分页简单案例,标签关联文章,对文章进行分页,上一篇文章写得比较繁琐,这里可以将问题拆解成一对多关系,那么问题就迎刃而解了. 我们可以通过查询tag直接拿到tag_id,通过中间表和文章表关联一 ...

  5. Laravel5.2之模型关联预加载

    2019独角兽企业重金招聘Python工程师标准>>> 说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查 ...

  6. 小白学流程引擎-FLowable(五) — BPMN2.0模型规范

    前言: 不用到处百度BPMN2的博客了,本篇文章带你系统掌握BPMN2规范的核心知识点.全文2万字,全覆盖BPMN2知识点,图文并茂,泡杯咖啡,慢慢细品- 一.BPMN是什么 BPMN(Busines ...

  7. 飞桨2.0高层api教程——使用预训练词向量进行文本分类

    使用预训练的词向量完成文本分类任务 作者: fiyen 日期: 2021.03 摘要: 本示例教程将会演示如何使用飞桨内置的Imdb数据集,并使用预训练词向量进行文本分类. 摘要 在这个示例中,我们将 ...

  8. WF4.0 应用篇(四) IActivityToolboxService 自动化工具栏

    WF4.0 应用篇(四) IActivityToolboxService 自动化工具栏 例子下载: http://files.cnblogs.com/foundation/IActivityToolb ...

  9. think php5关联模型,thinkphp5中关联模型的定义与使用方法

    定义一对一关联 这里假设你已经把thinkphp5的环境都配置好了,数据库也连接OK了.想通过模型把两张表关联起来然后在通过控制器一调用就可以得到两张表的信息. 现在我准备了两张表,一张管理员表pwn ...

最新文章

  1. 三次握手和四次挥手图解_图解 TCP 三次握手和四次挥手
  2. 一个简洁OKR是成功的关键因素
  3. php重定向 htaccess文件的编写
  4. SAP为什么并购sybase
  5. 使用Apache Flume抓取数据(1)
  6. python进阶(十七)xml(下)
  7. 前端学习(2912):MvvM的实现原理
  8. 相机靶面大小和显微镜FN的匹配关系
  9. erlang 变量存储在哪里_erlang中变量作用域
  10. 【剑指offer】链表中环的入口
  11. 大数据分析的方法有哪些
  12. MyBatis集合Spring(四)之使用Spring处理事务
  13. Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
  14. 如何自学成为程序员?
  15. linux命令行打开写字板,在Linux操作系统中使用手写板
  16. hadoop安装(包含hive)
  17. Vue中:error ‘XXXXX‘ is not defined no-undef解决办法
  18. 三角函数对应在平面坐标上画圆
  19. fastqc检验时不能执行java_fastqc对原始测序reads质控
  20. 遗传算法:交叉操作 Inver-over 算子

热门文章

  1. Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You hav
  2. vue实现仿阿里云官网的ace-view-fullColumn模块
  3. mysql重启数据库实例命令_mysql重启数据库实例命令
  4. 部分mp4视频在ios手机端上无法播放问题
  5. windows 防火墙日志_如何使用Windows防火墙日志跟踪防火墙活动
  6. 虚拟机怎么安装geany_75 个最常用的 Linux 应用程序(2018 年)
  7. 2022年十大汽车行业新闻
  8. 知己知彼才能成功拿下职场offer!
  9. 基于node实现qq空间点赞
  10. 企业微信裂变获客,粉丝增长的优势在哪?