Как преобразовать этот запрос MySQL в Laravel? - PullRequest
1 голос
/ 04 ноября 2019

Здесь мой MySQL запрос (работа в phpMyAdmin):

SELECT workcenter, (SUM(w1+w2 +w3 +w4)/ (COUNT(DISTINCT(teknisi))*40*4) )*100 AS total FROM `team` GROUP by workcenter ORDER BY total

, затем я пытаюсь использовать Laravel Sintax, как показано ниже (не работает):

$sql = Team::groupBy('workcenter')->select('workcenter', \DB::raw('(SUM(w1+w2+w3+w4)/ (COUNT(DISTINCT(teknisi))*30*4) )*100 AS total'))
            ->OrderBy('total', 'Desc')
            ->get();

Когда я запускаюlaravel sintax, он не показывает никаких ошибок, но вывод ничего не дает ..

Пожалуйста, кто-нибудь поможет мне преобразовать запрос MySQL в Laravel Sintax. Спасибо!

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Я думаю, что вы достаточно близки, однако это не похоже на правильный способ группировки с помощью Eloquent ORM. Попробуйте использовать необработанные выражения, что-то вроде этого может работать:

$sql = DB::table('team')
                     ->select(DB::raw('workcenter, (SUM(w1+w2 +w3 +w4)/ (COUNT(DISTINCT(teknisi))*40*4) )*100 as total'))
                     ->orderBy('total', 'desc')
                     ->groupBy('workcenter')
                     ->get();

Подробнее о необработанных выражениях здесь - https://laravel.com/docs/6.x/queries#raw-expressions

0 голосов
/ 04 ноября 2019

Всякий раз, когда я хочу преобразовать SQL-запрос в Laravel, я всегда меняю имя одного столбца, в отчете об ошибках laravel будет показан ваш текущий запрос, и вы сможете сравнить его с SQL-запросом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...