Может быть, кто-то здесь может помочь мне сформировать этот 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();
**
Всегда есть ошибка .. Синтаксис кажется неправильным.
как мне получить правильный запрос с помощью Query Builder?






Попробуйте использовать 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)
если это не сработает, вам нужно добавить к столбцам префикс соответствующего имени таблицы min(trainings.heartrate).
обновленная версия работала, но внутри запроса есть оператор RAW. Но спасибо за помощь!
Попробуй это
$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'))
что вы имеете в виду под "формой"?