laravel 使用 in on 子句模型名称加入多态枢轴 table

laravel join with polymorphic pivot table using in on clause model names

我正在使用 eloquent 多态关系,它非常适合管理不同模型和称为公司的其他模型之间的枢轴 table。

我有一个包含以下结构的枢轴 table:

我必须使用 model_id 和 model_type 使用 eloquent 查询生成器在车辆 table 和枢轴 table 之间进行连接查询。但是当我这样做时:

$builder->join('pivot_table', function($join){
        $join->on('vehicle.id','=','pivot_table.model_id')
            ->on('pivot.model_type', Vehiculo::class  );
    })->select('vehicle.*',pivot_table.*)->get();

此代码没有 return 任何结果。但是,如果我将第二个 on 子句更改为:

    $builder->join('pivot_table', function($join){
        $join->on('vehicle.id','=','pivot_table.model_id')
            ->on('pivot.model_type', 'like' , '%Vehiculo%');
    })->select('vehicle.*',pivot_table.*)->get();

这段代码 运行 正确并且 return 得到了我想要的结果,但我认为这是错误的获取结果的方法。

有人知道是否有办法使 运行 第一个代码?

感谢您的回复。

好的。我解决了。解决方案是将第二个更改为 where

$builder->join('pivot_table', function($join){
        $join->on('vehicle.id','=','pivot_table.model_id')
            ->where('pivot.model_type' , Vehiculo::class);
    })->select('vehicle.*',pivot_table.*)->get();