关联模型查询结果最后一个img=null

来源:8-3 模型关联----嵌套关联查询

晓峰123

2017-05-18

记录的日志为:
[ info ] [ RUN ] app\api\controller\v1\Banner->getBanner[ E:\www\zerg\application\api\controller\v1\Banner.php ]
[ info ] [ DB ] INIT mysql
[ info ] [ LOG ] INIT File
[ sql ] [ DB ] CONNECT:[ UseTime:0.001000s ] mysql:dbname=zerg;host=127.0.0.1;port=3306;charset=utf8
[ sql ] [ SQL ] SHOW COLUMNS FROM `banner` [ RunTime:0.001000s ]
[ sql ] [ SQL ] SELECT * FROM `banner` WHERE  `id` = 1 LIMIT 1 [ RunTime:0.001000s ]
[ sql ] [ SQL ] SHOW COLUMNS FROM `banner_item` [ RunTime:0.001000s ]
[ sql ] [ SQL ] SELECT * FROM `banner_item` WHERE  `banner_id` = 1 [ RunTime:0.000000s ]
[ sql ] [ SQL ] SELECT * FROM `banner_item` WHERE  `banner_id` = 1 [ RunTime:0.001000s ]
[ sql ] [ SQL ] SHOW COLUMNS FROM `image` [ RunTime:0.001000s ]
[ sql ] [ SQL ] SELECT * FROM `image` WHERE  `id` IN (65,2,3,1) [ RunTime:0.000000s ]

http://szimg.mukewang.com/591ce4120001165106090609.jpg

http://szimg.mukewang.com/591ce4120001f4d713660736.jpg

http://szimg.mukewang.com/591ce4130001085013660736.jpg

http://szimg.mukewang.com/591ce47900014ea213660736.jpg

http://szimg.mukewang.com/591ce4790001a5f713660736.jpg

数据库是有对应的4张 图片的,为何查询结果最后一个img为null,断点调试BaseModel的prefixImgUrl($value,$data)方法只执行了3次,是什么原因




最后问题已经解决,原因是

V5.0.5+版本开始,默认使用IN查询方式,如果需要改为JOIN查询方式

 // 设置预载入查询方式为JOIN方式
return $this->hasOne('Profile')->setEagerlyType(0);


解决办法如下:

http://szimg.mukewang.com/591da160000138fa13660736.jpg

http://szimg.mukewang.com/591da16100010ae713660736.jpg

http://szimg.mukewang.com/591da161000155e513660630.jpg


写回答

5回答

7七月

2017-05-18

这个原因好奇怪。。。你可以看到课程里是给大家一遍遍演示的,包括断点走了4次。可以先对比下源代码吗?肯定还是哪里有问题,但这个不是一个典型的错误,我从来没有遇到过循环只走不完的情况。

0
2
晓峰123
非常感谢!
2017-05-18
共2条回复

慕粉2027112989

2017-07-01

刚好遇到这个问题,多谢。。。

1
0

7七月

2017-08-27

你们都不用课程的5.07么。。。这个建议学习阶段用5.07,后面自己再去升级啊。已经遇到很多因为版本的问题了,实际上新版本并没有太多的改进。不要一味追心啊。

0
0

小新在编程

2017-08-26

我的版本是5.0.10, 为什么没有遇到楼主中的问题,默认也是IN查询

0
0

walker02

2017-08-26

楼主真的很厉害,我也遇到了这个问题,感谢分享

0
0

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4805 学习 · 4382 问题

查看课程