请问$builder =Product::query() 筛选,如何写关联搜索,谢谢!

product 是产品,一个产品属于一个分类 ;
type产品分类; 一个分类有多个产品;

前端需要 颜色 价格 分类筛选;

  $builder =Product::query();

    //这里颜色搜索 可正常使用
        if ( !empty($this->color) ) {

            $builder->where('color', $this->color);
        }

    //这里价格搜索 可正常使用
        if (!empty($this->price)) {
            $builder->where('price', $this->price);
        }

    //这里颜色分类搜索 会报错,但不知道如何写了!
    //一个商品属于一个分类 这里使用关联
         if (!empty($this->type)) {
            $builder->type()->where('name', $this->type);
        }

         $this->products = $builder->get();

以上写法 分类就会报错,请问下这么写错在哪里了? 谢谢了!

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
Epona
最佳答案

要么使用join 要么使用类似下面的代码

$builder->whereHas('type', function($query) {
    $query->where('name', $this->type);
});

总之是不能 $builder->type()

4年前 评论
Epona (作者) 4年前
李小明 (楼主) 4年前
李小明 (楼主) 4年前
讨论数量: 1
Epona

要么使用join 要么使用类似下面的代码

$builder->whereHas('type', function($query) {
    $query->where('name', $this->type);
});

总之是不能 $builder->type()

4年前 评论
Epona (作者) 4年前
李小明 (楼主) 4年前
李小明 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!