Объединение Laravel с полиморфной сводной таблицей с использованием названий моделей в предложении

Я использую красноречивые полиморфные отношения, которые отлично подходят для управления сводной таблицей между различными моделями и другой моделью, называемой компанией.

У меня есть сводная таблица, которая содержит следующую структуру:

Я должен сделать запрос соединения между таблицей транспортных средств и сводной таблицей, используя model_id и model_type, используя eloquent построитель запросов. Но, когда я делаю:

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

этот код не возвращает никакого результата. Но если я изменю второе предложение на:

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

этот код работает правильно и возвращает результаты, что я хочу, но я думаю, что это неправильный способ получить результаты.

Кто-нибудь знает, есть ли способ заставить запустить первый код?

спасибо за ответы.

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();
Другие вопросы по тегам