更改Laravel created_at和updated_at的名称

2022-08-30 09:58:05

我可以映射Laravel的时间戳吗:

created_at到 和 ?post_datepost_date_gmt

updated_at到 和 ?post_modifiedpost_modified_gmt


我正在将Wordpress应用程序迁移到Laravel。

我正在使用Laravel访问Wordpress数据库的副本。数据库的实时版本仍在使用中,因此我不想更改架构。

Posts 表有 、 和 ,但 Laravel 期待和 。post_datepost_date_gmtpost_modifiedpost_modified_gmtcreated_atupdated_at

是否要更改Laravel查找的列名称?

我希望Laravel更新已经存在的所有列的时间戳。


答案 1

不幸的是,接受的答案可能会导致更新时间戳的问题。

您最好覆盖模型上的常量:

const CREATED_AT = 'post_date';
const UPDATED_AT = 'post_modified';

然后方法和将分别返回和,但不会造成任何伤害。getCreatedAtColumngetUpdatedAtColumnpost_datepost_modified

对于其他列,您需要使用@Oni建议的事件。


答案 2

如果您查看类的源代码Eloquent

https://github.com/illuminate/database/blob/4.2/Eloquent/Model.php#L223-L235

您应该能够通过重写这些常量来非常轻松地更改这些列名称。

<?php

class YourModel extends Eloquent {

    /**
     * The name of the "created at" column.
     *
     * @var string
     */
    const CREATED_AT = 'post_date';

    /**
     * The name of the "updated at" column.
     *
     * @var string
     */
    const UPDATED_AT = 'post_modified';

}

至于这些时间戳的版本,您可能需要查看 。这是一个良好的开端_gmtevents

http://driesvints.com/blog/using-laravel-4-model-events


推荐