Как преобразовать конкретный запрос PostgreSQL в построитель запросов laravel - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь преобразовать запрос postgresql в стиль построителя запросов laravel. У меня почти нет опыта работы с компоновщиком запросов laravel. Я не хочу использовать БД в сыром виде.

SELECT ca1.component, ca1.previousfeeder, COUNT(ca1.previousfeeder)
FROM mydbcarrdata_10.carrier ca1
WHERE ca1.component IN (
                    SELECT e.articlename
                    FROM mydbcarrdata_10.carrier ca
                    JOIN mydbcompdata_10.component co
                    ON ca.component = co.name
                    JOIN mydbmanldata_10.entry e
                    ON e.articlename = co.name
                    JOIN mydbmanldata_10.header h
                    ON h.id = e.headerid
                    JOIN mydbmanldata_10.mandata m
                    ON h.layoutid = m.id
                    JOIN mydblytldata_10.layout l
                    ON m.layout = l.name
                    WHERE l.name = 'M2077F_bottom'
                    GROUP BY e.articlename
                    ) 
GROUP BY ca1.component, ca1.previousfeeder
ORDER BY ca1.component asc

1 Ответ

0 голосов
/ 02 октября 2019

Я нашел соответствующий запрос с помощью построителя запросов:

DB::table('mydbcarrdata_10.carrier')->select(DB::raw('component, previousfeeder, count(previousfeeder)'))
        ->whereIn('component', DB::table('mydbcarrdata_10.carrier')->select('articlename')
                                                        ->join('mydbcompdata_10.component', 'component.name', '=', 'carrier.component')
                                                        ->join('mydbmanldata_10.entry', 'component.name', '=', 'entry.articlename')
                                                        ->join('mydbmanldata_10.header', 'entry.headerid', '=', 'header.id')
                                                        ->join('mydbmanldata_10.mandata', 'mandata.id', '=', 'header.layoutid')
                                                        ->join('mydblytldata_10.layout', 'layout.name', '=', 'mandata.layout')
                                                        ->where('layout.name', '=', 'M2077F_bottom')
                                                        ->groupBy('entry.articlename')
                                                        ->pluck('articlename')
                                                    )
        ->groupBy('component', 'previousfeeder')
        ->orderBy('component', 'asc')
        ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...