gpt4 book ai didi

php - 在 Laravel 4 中更改 created_at 和 updated_at 的格式

转载 作者:行者123 更新时间:2023-11-29 00:24:39 25 4
gpt4 key购买 nike

我正在使用 Laravel 的迁移来创建一些数据库表,我想知道它是否有可能创建 DATETIME 列而不是 TIMESTAMP 列。我使用的代码如下:

$table->increments('id');
$table->string('name', 255);
$table->bigInteger('size');
$table->dateTime('downloaded_at');
$table->timestamps();

我知道我可以使用模型中的属性更改返回日期的格式,但如果可能的话,我希望它们在我的数据库中为 DATETIME

最佳答案

我在源代码中做了一些挖掘,时间戳的类型是硬编码的,所以你不能仅仅将它重新配置为 DateTime

我认为更好的方法是让您创建自己的列(不使用 timestamps())然后在你的模型中你可以这样做:

public class User extends Eloquent
{
public function save()
{
$this->attributes['created_at'] = new DateTime;
return parent::save();
}
}

另一种方法是使用 ModelObservers

class UserObserver {

public function saving($model)
{
//
}
}

User::observe(new UserObserver);

你也可以尝试重写 Blueprint 类的 timestamp() 函数,但不能保证这不会在 Laravel 的其他地方搞砸代码,因为它使用 Carbon 来处理日期等......

class MyBlueprint extends Blueprint
{
public function timestamp($column)
{
return $this->addColumn('dateTime', $column);
}
}

然后在为迁移定义表结构时使用 MyBlueprint:

 Schema::create('users', function(MyBlueprint $table) {
// code
$this->timestamps();
}

关于php - 在 Laravel 4 中更改 created_at 和 updated_at 的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19505713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com