thinkphp5.1 关联预载入的一个 bug?

2018-07-03 22:26:14 +08:00
 lp7631010

下面这段是从官方文档上复制的:

如果要指定属性查询,可以使用:

$list = User::field('id,name')->with(['profile'=>function($query){ $query->field('email,phone'); }])->select([1,2,3]);


凭良心讲,这段代码是你们有测试过的么,确定闭包里的 field 起到了查询指定字段的作用么。。还是说这是将来要支持的写法,提前放进了文档里面???心累,失望,有碰到相同问题的没

2913 次点击
所在节点    PHP
12 条回复
torbrowserbridge
2018-07-03 22:55:25 +08:00
新项目,老老实实用 laravel 不好么。何必找虐呢。
lp7631010
2018-07-03 23:00:44 +08:00
问题是已经在用了啊 而且其他同事之前都是在用 tp3.2 一下子跨到 laravel 项目进度也是个问题啊
chinvo
2018-07-03 23:03:26 +08:00
请问你在使用的 TP 版本?
lp7631010
2018-07-03 23:06:09 +08:00
@chinvo 5.1.17
changwei
2018-07-03 23:22:31 +08:00
你直接去提 issue 呗。。。
jayin
2018-07-03 23:28:14 +08:00
升级下。。
chinvo
2018-07-03 23:30:12 +08:00
@lp7631010 #4 刚刚在组里问了下,还没有负责这部分的人给反馈,你可以试试升级到 5.1.18 或者 dev-master 版本。
lp7631010
2018-07-04 09:19:35 +08:00
@chinvo 更新到 5.1.18 也并没有效果,而且对闭包里的 query 做任何链式操作都不会有任何影响,调用不存在的方法也不会报错,好像根本就没有走进去
topthink
2018-07-04 09:22:47 +08:00
抱歉 这是官方文档的失误,我已经修正文档了,因为指定属性的时候必须包含关联键。其实没有必要这样操作,规范的建议是在输出的时候使用 hidden 隐藏。
lp7631010
2018-07-04 09:58:09 +08:00
@topthink 问题是多对多的话 预载入包含关联键怎么包含 不在一个表 ; 而且那个 hidden 对查出来的关联数据无效,按文档上操作也没用哦
lp7631010
2018-07-04 10:13:58 +08:00
这样子看来列表展示关联数据的查询只能通过 db 类的拼接 join 去完成了
topthink
2018-07-04 10:53:24 +08:00
@lp7631010 关于关联操作部分 建议首先阅读下官方的掌握数据库和模型的教程 会说的比较详细一些

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/467920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX