setEagerlyType是fastadmin在使用关联查询时提供的配置字段,为设置预载入方式。根据官方文档描述,在V5.0.4+版本开始一对一关联预载入支持两种方式:setEagerlyType(0) 是JOIN方式(一次查询) setEagerlyType(1)是IN方式(两次查询)。2.例子
在model层对应的model文件加入该函数 $this->belongsTo(被关联表,外键, 主键, [], 'LEFT')->setEagerlyType(关联模式 0/1 );
因为返回的是一个二维数组所以可以使用关联表中的字段product.name='xxx'
当然,如果需要关联多张表也可以把with中的参数写成数组情势
因为使用的是IN模式,返回的是一个一维数组所以无法使用关联表中的字段product.name='xxx'
使用IN模式调用关联表的字段是查不到关联数据的3.请求速率
通常情况下使用 JOIN 操作比 IN 子查询更快。这是因为数据库优化器在实行查询计划时能够更有效地处理 JOIN 操作,而且 JOIN 操作可以使用索引来加速数据检索。4.疑问
我前段时间使用关联表的时候就遇到了一个题目,很奇怪,希望知道的大佬评论区辅导一下!题目!
就是公司要求我爬取国外的一个网站的数据,导入平台作为借鉴,然后爬取并清理完数据以后,一张是产品表,里面有一个PID对应着产品详情表的PID,所以我在做查询时我需要关联详情表的PID获取详情,数据的话产品表与详情表都各15w条数据,而且我将PID设置为索引了已经,然而当我在做分页查询时,使用的是join查询,查询100s都没出效果,但是我使用IN查询,0.1s既有效果,这又是为什么?代码如下
model层
业务层
业务层不变,model层setEagerlyType(1)改为IN方式setEagerlyType(0),查询速率从0.1s变为100s+上述为个人整理内容,程度有限,如有错误之处,望各位园友不吝见教!如果觉得不错,请点击推荐和关注!谢谢~๑•́₃•̀๑ [鲜花][鲜花][鲜花]
如果有大佬知道,请评论区指导一下~谢谢!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |