Как установить формат столбцов даты в сводной таблице?

#php #laravel #laravel-4 #pivot-table

#php #laravel #laravel-4 #сводная таблица

Вопрос:

Я столкнулся с проблемой с форматом полей даты в Laravel в сводной таблице. Чего я хочу добиться, так это использовать поля «created_at» и «updated_at» в формате времени Unix INT (11) вместо метки ВРЕМЕНИ. Я также пытался использовать пользовательский свод, но безуспешно. На данный момент код работает нормально, но он использует временную метку, а не Unix, как предполагалось.

Где-то в моем коде я делаю это:

 //[.. other stuff ...]

//update the relation wich references current user and group 1

$user->groups()->sync(array(1 => array('newsletter' => $newsletter)));
 

Это мой код:

 use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentRelationsPivot;

class User extends Model{
    public function groups() {
        return $this->belongsToMany('Group')->withTimestamps();
    }

    public function newPivot(Eloquent $parent, array $attributes, $table, $exists) {
        if ($parent instanceof Group) {
            return new UserGroup($parent, $attributes, $table, $exists);
        }
        return parent::newPivot($parent, $attributes, $table, $exists);
    }
}

class Group extends Model {
    public function users() {
        return $this->belongsToMany('User')->withTimestamps();
    }

    public function newPivot(Eloquent $parent, array $attributes, $table, $exists)
{
        if ($parent instanceof User) {
            return new UserGroup($parent, $attributes, $table, $exists);
        }
        return parent::newPivot($parent, $attributes, $table, $exists);
    }
}

class UserGroup extends Pivot 
{
protected function getDateFormat()
{
    return 'U';
}

public function getDates()
{
    return array(
    'created_at',
    'updated_at');
}
    public function user() {
    return $this->belongsTo('User');
}

public function group() {
    return $this->belongsTo('Group');
}

}
 

Спасибо за ваше внимание.

Комментарии:

1. Вероятно, вам нужно взглянуть на мутаторы и вспомогательные элементы в документации laravel. laravel.com/docs/eloquent#accessors-and-mutators

2. @fmgonzalezas как указано здесь , для полей даты вам необходимо переопределить метод getDates(), как я уже сделал.

3. Переопределяя getDates() таким образом, вы ничего не получите. created_at и updated_at уже включены в $dates массив. Я думаю, вам нужно вернуть пустой массив и создать свои собственные мутаторы-аксессуары к этим полям, чтобы установить-получить Unixtimestamps.