Объединение нескольких таблиц с помощью одной таблицы в laravel

#mysql #sql #laravel #join

#mysql #sql #laravel #Присоединиться

Вопрос:

Я знаю, что могу использовать with () в eloquent, но мне нужно запускать только по запросу.

пожалуйста, помогите мне, как объединить две или более таблицы с одной таблицей.

Я использую laratables и пытаюсь показать количество лайков.

Я пытаюсь это создать, но возникает проблема: (

 $roles = DB::table('table0')
        ->leftJoin('table1', 'table0.id', '=', 'table1.table_id')
        ->leftJoin('table2', 'table0.id', '=', 'table2.table_id')
        ->select('table0.id', DB::raw('COUNT(table1.id) as table1_count, COUNT(table2.id) as table2_count'))
        ->groupBy('table0.id');
  

для получения более подробной информации о моей проблеме, а также о моем желании, вы можете увидеть эту картинку ниже.

введите описание изображения здесь

Комментарии:

1. отвечает ли это на ваш вопрос? — kirschbaumdevelopment.com/news-articles /…

2. Подсчет количества при использовании нескольких соединений дает неправильные результаты из-за «умножения соединения». Используйте COUNT(DISTINCT tableN.id) по крайней мере (если количество строк в таблице велико, то этот метод будет слишком дорогим, вместо этого используйте подсчет подзапросов)..

3. Спасибо, Акина. Да, моя проблема в том, что не используется DISTINCT.