如何在Laravel 5 Migrate中使用Timezone设置TimeStamp

时间:2015-04-10 09:05:29

标签: postgresql migration laravel-5

我在迁移laravel 5中设置了时间戳,如下所示:

$table->timestamp('verify_account')->nullable();

但是,在postgresql中没有设置timezone。我想在postgresql中设置带时区的时间戳,怎么做?

2 个答案:

答案 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');

更新

  1. 在app / Custom中创建文件,将其命名为CustomBlueprint.php。如果您没有自定义目录,只需先创建。
  2. CustomBlueprint.php:

    namespace App\Custom;
    
    use Illuminate\Database\Schema\Blueprint;
    
    class CustomBlueprint extends Blueprint {
    
        public function timestampz($column)
        {
            return $this->addColumn('timestamptz', $column);
        }
    
    }
    
    1. 创建CustomPgsqlGrammar.php。
    2. 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';
          }
      
      }
      
      1. 在您的迁移文件中:
      2. 别忘了

        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);
        });
        
        1. 如何使用:

          $ schema-> create('users',function(CustomBlueprint $ table) {

          $table->timestampz('completing_registration');
          

          }