Как использовать функцию «DATEADD» в соединении Laravel?

Я присоединился к Laravel 4, как указано ниже:

return DB::table(Location::getTableName() . ' as l')->where('l.company_id', $companyId)
->join(User::getTableName() . ' as u', 'u.location_id', '=', 'l.id')->whereIn('l.id', $locationsId)
->join(UserTimeline::getTableName() . ' as ut', 'ut.user_id', '=', 'u.id')
->join(Status::getTableName() . ' as s', 's.id', '=', 'ut.status_id')
->select(
'l.name as location_name',
'u.first_name as user_first_name',
'u.last_name as user_last_name',
'u.email as user_email',
'ut.started_at as timeline_started_at',
'ut.finished_at as timeline_finished_at',
's.id as status_id',
's.label as status_label'
)
->orderBy('ut.id', 'asc')
->skip($from)
->limit($limit)
->get();

Я должен определить часовой пояс пользователя и вычислить разницу с GMT как число, которое может быть +5 для Пакистана и +5,5 для Индии.
Теперь проблема со мной в том, что я экспортирую данные этого соединения в файл CSV. Я должен добавить часы как числа в timeline_started_at и timeline_finished_at. Я искал и обнаружил, что метод SQL DATEADD может добавлять или вычитать часы.

Реальная проблема в том, что я не знаю, где в вышеупомянутом соединении я должен использовать функцию «DATEADD» в моем соединении Laravel.

Может ли кто-нибудь PLZ помочь мне в этом отношении ?????????

1

Решение

Вы можете использовать что-то вроде этого:

return DB::table(Location::getTableName() . ' as l')->where('l.company_id', $companyId)
->join(User::getTableName() . ' as u', 'u.location_id', '=', 'l.id')->whereIn('l.id', $locationsId)
->join(UserTimeline::getTableName() . ' as ut', 'ut.user_id', '=', 'u.id')
->join(Status::getTableName() . ' as s', 's.id', '=', 'ut.status_id')
->select(
'l.name as location_name',
'u.first_name as user_first_name',
'u.last_name as user_last_name',
'u.email as user_email',
'DATE_ADD(ut.started_at, INTERVAL '.$var.' HOUR) as timeline_started_at',
'DATE_ADD(ut.finished_at, INTERVAL '.$var.' HOUR) as timeline_finished_at',
's.id as status_id',
's.label as status_label'
)
->orderBy('ut.id', 'asc')
->skip($from)
->limit($limit)
->get();

куда $var представляет количество часов.

1

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

Ты можешь использовать DB::raw() добавить функции sql к вашему запросу.

Например:

$test = DB::table('test')->where(DB::raw('DATE_ADD(created_at, 5)'), '<', $date)->get();
0

По вопросам рекламы [email protected]