Can I map Laravel\'s timestamps from:
created_at
to post_date
and post_date_gmt
?
updated_at
to post
Just put this in your tables model file,
const CREATED_AT = 'your_custom_created_at_field_name';
const UPDATED_AT = 'your_custom_updated_at_field_name';
My model looks like this for avoiding confusions
class diarymodule extends Model
{
protected $table = 'diarymodule';
const CREATED_AT = 'CreatedDate';
const UPDATED_AT = 'UpdatedDate';
}
You could try using the attribute getters and 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');
}
}
I don't know if this will work, but you could give it a go. Certainly a base to go on maybe - you'll have to play around with it.
If you look into the source of the Eloquent
class
https://github.com/illuminate/database/blob/4.2/Eloquent/Model.php#L223-L235
You should be able to change these column names pretty easily by overriding those constants.
<?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';
}
As for the _gmt
version of those timestamps, you might want to look into events
. Here is a good start
http://driesvints.com/blog/using-laravel-4-model-events
The accepted answer may cause problems with updating timestamps unfortunately.
You'd better override consts on your model:
const CREATED_AT = 'post_date';
const UPDATED_AT = 'post_modified';
then methods getCreatedAtColumn
and getUpdatedAtColumn
will return post_date
and post_modified
respectively, but won't do any harm.
For the other columns you need use events like @Oni suggested.