【发布时间】:2020-04-13 16:03:59
【问题描述】:
这个问题和我的预览有关:How to change time zome in different tables in Laravel
我标记答案后,发现一个问题:
当用户加载页面时,它需要给他当天的记录。
例如从 00:00:00 到现在。
问题是控制器要求数据库从 UTC 时间 00:00:00 开始提供记录,之后我的模型(在上面的链接中)将其解析为本地时间。
这个当地时间是欧洲/索非亚(+3 小时),导致从今天 03:00:00 开始错过 3 条记录。
知道怎么解决吗?
控制器:
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();
}
}
【问题讨论】:
-
你能显示一些代码吗?与上一个问题一样,您只需通过定义访问器来更改属性的值。
-
OK,代码已添加。
-
好的。让我检查一下。
-
我已经添加了答案。您可以检查并实施它。
标签: php laravel postgresql