我在迁移laravel 5中设置了时间戳,如下所示:
$table->timestamp('verify_account')->nullable();
但是,在postgresql中没有设置timezone。我想在postgresql中设置带时区的时间戳,怎么做?
答案 0 :(得分:4)
使用Postgres时,现在可以使用timestampsTz
功能。它应该在Laravel 5.1及更高版本中可用。
答案 1 :(得分:0)
我解决了我的问题..我在laravel供应商目录中添加了一些代码
第一步,打开
供应商/ laravel /框架/ SRC /照亮/数据库/模式/ Blueprint.php
然后,添加:
public function timestampz($column)
{
return $this->addColumn('timestamptz', $column);
}
之后,打开
供应商/ laravel /框架/ SRC /照亮/数据库/模式/语法/ PostgresGrammar.php
然后,添加:
protected function typeTimestamptz(Fluent $column)
{
return 'timestamp(0) with time zone';
}
如何使用 在您的迁移文件中,如下所示:
$table->timestampz('yourcolumntimestampwithtimezone');
更新
CustomBlueprint.php:
namespace App\Custom;
use Illuminate\Database\Schema\Blueprint;
class CustomBlueprint extends Blueprint {
public function timestampz($column)
{
return $this->addColumn('timestamptz', $column);
}
}
CustomPgsqlGrammar.php:
namespace App\Custom;
use Illuminate\Support\Fluent;
use Illuminate\Database\Schema\Grammars\PostgresGrammar;
class CustomPgsqlGrammar extends PostgresGrammar {
protected function typeTimestamptz(Fluent $column)
{
return 'timestamp(0) with time zone';
}
}
别忘了
use App\Custom\CustomBlueprint;
use App\Custom\CustomPgsqlGrammar;
use Illuminate\Database\Migrations\Migration;
然后在
之前添加以下代码架构::创建
DB::connection()->setSchemaGrammar(new CustomPgsqlGrammar());
$schema = DB::connection()->getSchemaBuilder();
$schema->blueprintResolver(function($table, $callback) {
return new CustomBlueprint($table, $callback);
});
如何使用:
$ schema-> create('users',function(CustomBlueprint $ table) {
$table->timestampz('completing_registration');
}