Как сформировать этот оператор sql в формате RAW с помощью Query Builder Laravel

Может быть, кто-то здесь может помочь мне сформировать этот RAW SQL-запрос с помощью Query Builder из Laravel.

**

DB:: select(DB:: raw("select min(heartrate) as hr, max(rotation) as rot, max(calories) as cal 
                                          from trainingsdatas, trainings 
                                          where trainings.user_id = $id 
                                          and trainingsdatas.training_id= trainings.id "));

**

Это одна попытка:

DB::table('trainingsdatas')
->join('trainings','trainings.id','=','trainingsdatas.training_id')
->min('heartrate as hr')
->max('rotation as rot')
->max('calories as cal')
->where('trainings.user_id','=', $id)
->get();

**

Всегда есть ошибка .. Синтаксис кажется неправильным.

что вы имеете в виду под "формой"?

madalinivascu 22.05.2018 14:23

как мне получить правильный запрос с помощью Query Builder?

vergil_3 22.05.2018 14:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
103
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте использовать select

DB::table('trainingsdatas')
->join('trainings','trainings.id','=','trainingsdatas.training_id')
->selectRaw('min(heartrate) as hr, max(rotation) as rot, max(calories) as cal')
->where('trainings.user_id','=', $id)
->get();

Я получаю эту ошибку: SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «min (частота сердечных сокращений)» в «списке полей» (SQL: выберите min(heartrate) как hr, max(rotation) из внутреннего соединения trainingsdatastrainings на trainings.id = trainingsdatas.training_id, где trainings .user_id = 1)

vergil_3 22.05.2018 14:28

если это не сработает, вам нужно добавить к столбцам префикс соответствующего имени таблицы min(trainings.heartrate).

madalinivascu 22.05.2018 14:33

обновленная версия работала, но внутри запроса есть оператор RAW. Но спасибо за помощь!

vergil_3 22.05.2018 14:39

Попробуй это

 $trainings = Trainings::query()->where('user_id', $id)
->join('trainingsdatas', 'trainings.id', '=', 'trainingsdatas.training_id')
->select(DB::raw('MAX(rotation) as rot'), DB::raw('MIN(heartrate) as hr'), DB::raw('MAX(calories) as cal'))

Другие вопросы по теме