有个关于 Laravel with 关联查询的问题困扰我了
就是我有with查询使用场景,然后with的表的字段需要用到模糊匹配查询,但是with里面使用不到模糊查询是为什么,我也有把全过程的查询原生sql语句打印出来,发现并没有走到with里面的模糊查询,后面只能用联表查询解决
whereHas()了解一下。
@loveinalife whereHas()有一个查询是用过,可以去过滤条件,但是好像也不会走模糊匹配查询吧
@loveinalife 嗯嗯,我之前试了不行,把整个过程的sql原生打印出来没看到关联的表里面有模糊查询的语句,比较疑惑
你的需求是用with查一对多的数据吗,然后用like筛选子表数据?
with使用回调函数查不出来吗,我记得以前用过一次,不知道可不可以
@邪恶的咖啡 这个试过了也是不可以的,之前是这么写的,原生sql没有看到执行到这层的模糊查询语句
@loveinalife 就是列表数据,然后有关联的几张表,with里面的子表有需要模糊匹配的字段
@HACK_QC 可是我确实能通过with用回调的方式能模糊查询,这是我刚才做的一个测试数据
返回结果为:
改一下数据
返回结果为:
@HACK_QC 我想你应该是代码出现了问题,或者你应该贴出代码,包括Model的关联查询方法,更容易让大牛分析问题原因。
@邪恶的咖啡 好的,我明天再重新测试下,可能是我sql语句没打全,sql语句是没错的,我也是这么写的
whereHas 和 with 同时用,whereHas 只是用来做判断的,如果能看到有 exists 的 sql 说明写对了