Этот вопрос связан с моим предварительным просмотром: Как изменить время в разных таблицах в Laravel
После того, как я отмечу ответ, обнаружу проблему:
Когда пользователь загружает страницу, ему нужно дать ему записи за текущий день.
Например, с 00:00:00 до настоящего момента.
Проблема заключается в том, что контроллер запрашивает у БД выдачу записей с 00:00:00 в UT C, после этого моя модель (по ссылке выше) разбирает его на МЕСТНОЕ время.
Это местное время - Европа / София (+3 часа), в результате чего с сегодняшнего дня пропускаются 3 записи, начиная с 03:00:00.
Есть идеи как это исправить?
Контроллер:
function getdata_chart(Request $request)
{
$start_date = date('d-m-Y 00:00:00');
$end_date = date('d-m-Y 23:59:59');
if($request->start_date != '' && $request->end_date != '')
{
// if user fill dates
$dateScope = array($request->start_date ." 00:00:00", $request->end_date ." 23:59:59");
} else {
// default load page - today
$dateScope = array($start_date, $end_date);
};
$students = MeasCanal::whereBetween('recordtime', $dateScope)
->selectRaw('recordtime')
->selectRaw('max(formattedvalue) filter (where fullname = \'Данни.Кота\') as iazovir')
->selectRaw('max(formattedvalue) filter (where fullname = \'Данни.Температура\') as temperatura350')
->where(function ($query) {
$query->where('fullname', 'like', "Язовир.Данни.Кота")
->orWhere('fullname', 'like', "ГСК_11_350.Данни.Температура");
})
->groupBy('recordtime')
->orderBy('recordtime')
->get();
return response()->json($students);
}
return response()->json($students);
}
Модель:
class MeasCanal extends Model
{
protected $connection = 'MeasCanal';
protected $table = 'meas_kanal';
protected $fillable = ['fullname','formattedvalue','recordtime','qualitydesc','statedesc','id'];
/**
* Get the user's recordtime.
*
* @param string $value
* @return string
*/
public function getRecordtimeAttribute($value)
{
return Carbon::parse($value)->timezone('Europe/Sofia')->toDateTimeString();
}
}