laravel使用in子句模型名称与多态数据透视表连接

时间:2019-01-21 13:10:13

标签: php mysql join laravel-5 eloquent--relationship

我正在使用雄辩的多态关系来管理不同模型与其他称为company的模型之间的数据透视表。

我有一个数据透视表,其中包含以下结构: enter image description here

我必须使用雄辩的查询构建器使用model_id和model_type在车辆表和数据透视表之间进行联接查询。但是当我这样做时:

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

此代码不返回任何结果。但是,如果我将第二个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();

此代码正确运行并返回所需的结果,但我认为这是获取结果的错误方法。

有人知道是否有一种方法可以使第一个代码运行?

感谢您的答复。

1 个答案:

答案 0 :(得分:0)

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

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