Как сложить два столбца в Laravel 5.6 - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть SQL-запрос, и я хочу преобразовать его в eloquent.Мой запрос, который я знаю, что он работает:

SELECT DISTICT(excavatorId), SUM(times_loaded), SUM(litres) FROM daily GROUP BY excavatorId;

и возвращает следующий результат:

+-------------+-------------------+-------------+
| excavatorId | sum(times_loaded) | sum(litres) |
+-------------+-------------------+-------------+
|          55 |               179 |         168 |
|          60 |                50 |          50 |
+-------------+-------------------+-------------+

Теперь в Laravel я пробую следующее:

$result = DB::table('daily as d')
                ->select([
                    'excavatorId',
                    'times_loaded',
                    'litres'
                ])
              ->groupBy('excavatorId')
              ->where('date', $request->input('date'))
              ->sum('d.times_loaded', 'd.litres');

Этот запрос возвращает только строку, которая имеет значение только «179».Как правильно сделать это в Laravel и получить результат запроса SQL?

1 Ответ

0 голосов
/ 22 февраля 2019

Используйте DB :: raw () для выполнения операций базы данных без извлечения всех данных.

    $result = DB::table('daily')
          ->select([
                'excavatorId',
                DB::raw("SUM(times_loaded) as total_times_loaded"),
                DB::raw("SUM(litres) as total_liters"),
            ])
          ->groupBy('excavatorId')
          ->where('date', $request->input('date'))
          ->get();

Вам не нужно использовать daily as d, поскольку вы не объединяете две таблицы, так что вам может понадобитьсяссылка на таблицу.

Пожалуйста, найдите ссылку здесь

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