Laravel Query Builder работает неправильно

Я пытаюсь сделать расширенное соединение с laravel, которое выглядит так:

$locations = DB::table('location')
->select('location.location_time',
'heart_rate.heartrate'
)
->leftJoin('heart_rate' , function($join) use ($data) {
$join->on('heart_rate.user_id', '=', DB::raw('1'))
->where('heart_rate.time', '>',  DB::raw('(location.location_time - INTERVAL 5 SECOND)')) //   ->whereBetween('heart_rate.time', array(, DB::raw('location.location_time + 2 SECOND')));
->where('heart_rate.time', '<',  DB::raw('(location.location_time + INTERVAL 5 SECOND)'));
})
->where('location.user_id', '=',  DB::raw('1'))
->whereBetween('location.location_time', array( "2015-04-24 00:00:00", "2015-04-25 23:59:59" ))
->get();

который возвращает следующее: [{"location_time":"2015-04-24 14:00:00","heartrate":null}]

Однако, когда я позволил ему вывести запрос и ввести его напрямую в mySQL, я получил следующий результат: введите описание изображения здесь, как это должно быть, так как таблицы из базы данных:

Таблица ‘heart_rate’: введите описание изображения здесь

Таблица ‘местоположение’: введите описание изображения здесь

SQL-запрос, который я дам

SELECT
`location`.`location_time`,
`heart_rate`.`heartrate`
FROM
`location`
LEFT JOIN `heart_rate`
ON `heart_rate`.`user_id` = 1
AND `heart_rate`.`time` > (
location.location_time - INTERVAL 5 SECOND
)
AND `heart_rate`.`time` < (
location.location_time + INTERVAL 5 SECOND
)
WHERE `location`.`user_id` = 1
AND `location`.`location_time` BETWEEN "2015-04-24 00:00:00"AND "2015-04-25 23:59:59"

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector