模型关联多个模型时使用scope范围查询的问题!!!

浏览:119 发布日期:2022/07/04 分类:ThinkPHP6专区 关键字: 模型关联 scope 流年 流年 流年
需求: 模型关联多个子模型时, 子模型的scope查询范围和全局查询范围生效.

阅读文档, 发现了 {with, withJoin, hasWhere} 3个模型关联方法, 但都不能完美实现上面的需求, 下面将列举这三个方法我在使用出现的各种问题.

1. with():
with()方法在一定程度上可以实现上面的需求, 但是有缺陷,.
首先 with() 预载入查询用的是in 操作, 如果in的数量太多有严重的性能问题.
其次是with()方法一但使用了匿名函数, 预载入失效, 变成n+1次查询(严重问题), 子模型的scope查询范围也失效. (注: 这里表述有误, n+1的情况确实有, 但暂不确定是怎么出现的)

2. withJoin():
withJoin()方法在关联时不会带上scope查询范围, 直接寄.

3. hasWhere():
hasWhere()在关联一个模型的时候可以完美实现需求, 但是!但是!但是! 它要怎样才能关联多个模型啊!啊!啊!
最佳答案
评论( 相关
后面还有条评论,点击查看>>