Измените имя созданного файла Laravel и обновленного_at

Могу ли я сопоставить метки времени Laravel с:

created_at для post_date и post_date_gmt ?

updated_at для post_modified и post_modified_gmt ?


Я переношу приложение WordPress в Laravel.

Я получаю копию базы данных WordPress, используя Laravel. Живая версия базы данных все еще используется, поэтому я не хочу менять схему.

Таблица Posts имеет post_date , post_date_gmt , post_modified и post_modified_gmt , но Laravel ожидает created_at и updated_at .

Есть ли способ изменить имена столбцов, которые ищет Laravel?

Я бы хотел, чтобы Laravel обновил отметки времени всех столбцов, которые уже есть.

Solutions Collecting From Web of "Измените имя созданного файла Laravel и обновленного_at"

К сожалению, принятый ответ может вызвать проблемы с обновлением временных меток.

Вам лучше переопределить consts на вашей модели:

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

то методы getCreatedAtColumn и getUpdatedAtColumn будут возвращать post_date и post_modified соответственно, но не post_modified .

Для других столбцов вам нужны такие события, как @Oni.

Если вы посмотрите на источник класса 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'; } 

Что касается версии _gmt этих временных меток, вы можете захотеть просмотреть events . Вот хорошее начало

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

Вы можете попробовать использовать атрибуты getters и getters:

 class Post extends Eloquent { public function getCreatedAtAttribute() { return $this->attributes['post_date']; } public function setCreatedAtAttribute($value) { $this->attributes['post_date'] = $value; // this may not work, depends if it's a Carbon instance, and may also break the above - you may have to clone the instance $this->attributes['post_date_gmt'] = $value->setTimezone('UTC'); } } 

Я не знаю, будет ли это работать, но вы могли бы уйти. Конечно, база, на которой можно пойти, может быть, вам придется поиграть с ней.