laravel 碳迁移的当前时间戳
laravel current timestamp in migration with carbon
我想将 created_at 显示为这样的时间戳:
created_at : 1625501162
所以这是我在迁移中的 created_at 专栏:
$table->string('created_at')->Carbon::now()->timestamp;
现在我希望在创建新记录时自动创建此字段并记录当前时间。所以当我将行更改为:
$table->string('created_at')->useCurrent(Carbon::now()->timestamp);
给我这个错误:
Method call is provided 1 parameters, but the method signature uses 0 parameters
那么我该如何解决这个问题?
对于时间戳 created_at 并自动存储,您还有哪些建议?
更简单的方法是configure the date format的模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The storage format of the model's date columns.
*
* @var string
*/
protected $dateFormat = 'U';
}
无需在迁移中设置默认值。每次 created_at、updated_at 和 deleted_at(如果您使用软删除)为 updated/filled,它将采用 unix 时间戳格式
迁移应该是一个整数
$table->integer('created_at')->nullable(); //you can omit this nullable
$table->integer('updated_at')->nullable(); //you can omit this nullable
// if you use softDelete trait
$table->integer('deleted_at')->nullable();
如果您希望您的列是时间戳,您应该使用 timestamp()
而不是 string()
。 useCurrent()
不带参数。变化
$table->string('created_at')->useCurrent(Carbon::now()->timestamp);
到
$table->timestamp('created_at')->useCurrent();
https://laravel.com/docs/8.x/migrations#column-method-timestamp
https://laravel.com/docs/8.x/migrations#column-modifiers
编辑:始终获取时间戳而不是日期,您可以使用
protected $casts = ['created_at' => 'timestamp'];
在您的模型中。
您可以在迁移中使用 timestamp()
而不是字符串。
$table->timestamp('created_at')->useCurrent();
您也可以在模型内部使用转换,以便在接收模型时始终获得预期的格式。
class Something extends Model {
protected $cast = [
'created_at' => 'timestamp'
];
}
这是 createdAt 列的示例。创建新记录时,默认为 UNIX 格式的日期。
$table->integer('createdAt')->default(DB::raw('extract(epoch from now())'));
我想将 created_at 显示为这样的时间戳:
created_at : 1625501162
所以这是我在迁移中的 created_at 专栏:
$table->string('created_at')->Carbon::now()->timestamp;
现在我希望在创建新记录时自动创建此字段并记录当前时间。所以当我将行更改为:
$table->string('created_at')->useCurrent(Carbon::now()->timestamp);
给我这个错误:
Method call is provided 1 parameters, but the method signature uses 0 parameters
那么我该如何解决这个问题?
对于时间戳 created_at 并自动存储,您还有哪些建议?
更简单的方法是configure the date format的模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The storage format of the model's date columns.
*
* @var string
*/
protected $dateFormat = 'U';
}
无需在迁移中设置默认值。每次 created_at、updated_at 和 deleted_at(如果您使用软删除)为 updated/filled,它将采用 unix 时间戳格式
迁移应该是一个整数
$table->integer('created_at')->nullable(); //you can omit this nullable
$table->integer('updated_at')->nullable(); //you can omit this nullable
// if you use softDelete trait
$table->integer('deleted_at')->nullable();
如果您希望您的列是时间戳,您应该使用 timestamp()
而不是 string()
。 useCurrent()
不带参数。变化
$table->string('created_at')->useCurrent(Carbon::now()->timestamp);
到
$table->timestamp('created_at')->useCurrent();
https://laravel.com/docs/8.x/migrations#column-method-timestamp
https://laravel.com/docs/8.x/migrations#column-modifiers
编辑:始终获取时间戳而不是日期,您可以使用
protected $casts = ['created_at' => 'timestamp'];
在您的模型中。
您可以在迁移中使用 timestamp()
而不是字符串。
$table->timestamp('created_at')->useCurrent();
您也可以在模型内部使用转换,以便在接收模型时始终获得预期的格式。
class Something extends Model {
protected $cast = [
'created_at' => 'timestamp'
];
}
这是 createdAt 列的示例。创建新记录时,默认为 UNIX 格式的日期。
$table->integer('createdAt')->default(DB::raw('extract(epoch from now())'));