Laravel 多对多使用WhereHas搜索,中间表和要搜索表的字段重合时

Posted sixdouble

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 多对多使用WhereHas搜索,中间表和要搜索表的字段重合时相关的知识,希望对你有一定的参考价值。

whereHas中的内容是对要查询模型字段的搜索

 Course::whereHas(‘help‘,function($query){
            $query->where(‘id‘,1);
        })->first();

打印sql

select * from `pte_course` where exists (select * from `pte_help` inner join `pte_course_help` on `pte_help`.`id` = `pte_course_help`.`help_id` where `pte_course`.`id` = `pte_course_help`.`course_id` and `id` = 1)

可以看出是对help表的id进行搜索

当中间表的字段和要搜索的表重合时,会报字段冲突错误(中间表使用id作为主键或者其他冲突字段)使用 .区分

 Course::whereHas(‘help‘,function($query){
            $query->where(‘help.id‘,1);
        })->first();

 

以上是关于Laravel 多对多使用WhereHas搜索,中间表和要搜索表的字段重合时的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:具有 whereHas 和多对多关系的全局范围

在 laravel 中搜索查询并计算结果的多对多关系

laravel中具有多对多关系的高级搜索

Laravel中多对多关系的多重搜索子句

Laravel 多对多关系搜索

Laravel whereHas on Many-to-Many 关系