请问$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();

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
Epona
最佳答案

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

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

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

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

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

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

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

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

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