我爲了設置基於auth用戶時區數據庫設置時區創造了一箇中間件:時區中間件不起作用
<?php
namespace App\Http\Middleware;
use Closure;
class TimezoneMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->user()->guest()) {
$timezone = config('app.timezone');
}
else {
$timezone = $request->user()->timezone;
}
date_default_timezone_set($timezone);
return $next($request);
}
}
我加入這個類的全球HTTP中間件聲明的底部Kernel.php
。
問題是它不起作用。當顯示created_at
字段時,無論我在數據庫中設置用戶時區,時間都保持完全相同。
數據庫中的所有日期和時間均以UTC格式存儲。除非你做某種轉換,這是你將從數據庫查詢中得到的。 – RiggsFolly
我只想從數據庫中提取任何'timestamp'來使用用戶指定的時區。我試過中間件,服務提供商,沒有任何工作。我迷路了。我使用數據表,所以我希望這是自動完成的。 – kjdion84
你可能需要閱讀這個http://stackoverflow.com/questions/15017799/how-to-convert-utc-date-to-local-time-zone-in-mysql-select-query – RiggsFolly