关于ORM一对多关联时筛选出来多条记录中相同的,如果不相同,直接pass
运行环境 Laravel[5.5] php[7.4]
问题描述:通过ORM一对多关联查询时,筛选出来关联表的数据
这里是最后返回的数据,要根据这里面的print_times进行筛选
筛选条件类型:1. 未打印,2. 部分打印,3 全部打印
比方说我传的类型为2【部分打印】。我要查询出来barcode->print_times里面等于0的数据,且大于0的数据的话
现在的问题:
我在with方法里面使用where条件是无效的,因为它在关联表里面是一条一条的查询的,这一条对上了,下一条没有对上,他还是会把这一条数据给返回回来
中途想到了一个思路,就是再查询一遍不加筛选条件的withCount,然后使用withCount和count($barcode)进行比较,不一样的话直接删除,但是这样会影响每页的条数
理想的情况,我筛选【未打印】,就只返回当前这条数据对应关联表中的多条数据的print_times都为0的,如果有一个为大于0的话,这条数据就没有
希望各位前辈指导
JSON数据
"barcode": [ { "print_times": "0", "fnp_pack_id": "DBD2021121902490621" }, { "print_times": "1", "fnp_pack_id": "DBD2021121902490621" } ]
解决
使用whereHas
推荐文章: