更改Laravel的created_at和updated_at的名称

use*_*292 39 php mysql laravel laravel-4

我可以映射Laravel的时间戳:

created_atpost_datepost_date_gmt

updated_atpost_modifiedpost_modified_gmt


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

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

该帖子表有post_date,post_date_gmt,post_modifiedpost_modified_gmt,但Laravel期待created_atupdated_at.

反正有没有改变Laravel寻找的列名?

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

Jar*_*zyk 65

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

您最好覆盖模型上的consts:

const CREATED_AT = 'post_date';
const UPDATED_AT = 'post_modified';
Run Code Online (Sandbox Code Playgroud)

然后,方法getCreatedAtColumngetUpdatedAtColumn将返回post_datepost_modified分别,但不会做任何伤害.

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

  • 当然只有你设置它们的模型和从它继承的所有模型,而不是父类 - "Eloquent\Model". (3认同)

小智 20

如果你看一下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';

}
Run Code Online (Sandbox Code Playgroud)

至于_gmt那些时间戳的版本,你可能想要研究一下events.这是一个好的开始

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