当前位置:网站首页 > 创业 > 正文

thinkphp5 关联预载入怎么用

0 张子豪 张子豪 2025-10-12 10:27 1

方式/步调

  1. 1

    联系关系查询的预查询载入功能,本家儿要解决了N+1次查询的问题,这里举一个例子,查询3个成果,会进行4次查询。

    728da9773912b31b8a4a3b228a18367adab4e193.jpg
  2. 2

    若是利用联系关系预查询功能,对于一对一联系关系来说,只有一次查询,对于一对多联系关系的话,就可以酿成2次查询,有用提高机能。

    3ac79f3df8dcd1004ebf0e2a7e8b4710b9122f9e.jpg
  3. 3

    也可以撑持嵌套预载入,例如:

    4b90f603738da97701927020bc51f8198618e378.jpg
  4. 4

    V5.0.7版本以上,撑持利用数组体例界说嵌套预载入,例如下面的预载入要同时获取用户的Profile联系关系模子的Phone、Job和Img子联系关系模子数据:

    08f790529822720e7c5e14f177cb0a46f21fab2d.jpg
  5. 5

    若是要指心猿意马属性查询,可以利用:

    08f790529822720e7c4314f177cb0a46f21fab28.jpg
  6. 6

    V5.0.4+版本起头一对一联系关系预载入撑持两种体例:JOIN体例(一次查询)和IN体例(两次查询),若是要利用IN体例联系关系预载入,在联系关系界说方式中添加

    21a4462309f79052f6a8b13500f3d7ca7bcbd502.jpg
  7. 7

    有些环境下,需要按照查询出来的数据来决议是否需要利用联系关系预载入,当然联系关系查询自己就能解决这个问题,因为联系关系查询是惰性的,不外用预载入的来由也很较着,机能具有优势。

    延迟预载入仅针对多个数据的查询,因为单个数据的查询用延迟预载入和联系关系惰性查询没有任何区别,所以不需要利用延迟预载入。

    若是你的数据集查询返回的是数据集对象,可以利用挪用数据集对象的load实现延迟预载入:

    024f78f0f736afc350c0c96ebf19ebc4b64512e8.jpg
  8. 8

    若是你的数据集查询返回的是数组,系统供给了一个load_relation助手函数可以完当作同样的功能。

    29381f30e924b899e4bb8f3362061d950a7bf632.jpgEND

来源:百闻(微信/QQ号:9397569),转载请保留出处和链接!


本文链接:https://www.ibaiwen.com/web/241101.html

张子豪

张子豪

TA很懒,啥都没写...

@百闻娱乐 本站部分内容转自互联网,若有侵权等问题请及时与本站联系,我们将在第一时间删除处理。 | 粤ICP备2024343649号 | (地图