объединение Laravel с полиморфной сводной таблицей с использованием названий моделей в предложении - PullRequest
0 голосов
/ 21 января 2019

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

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

Я должен сделать запрос соединения между таблицей транспортных средств и сводной таблицей, используя 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();

этот код не возвращает никакого результата.Но если я изменяю второе условие 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 голосов
/ 11 марта 2019

Хорошо. Я решил. Решение меняет второй на где

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