2015-11-16 2 views
1

У меня есть отношение между двумя таблицами - Many To Many.Eloquent - метки времени в сводных таблицах

Я использую метод sync() для сохранения соответствующих моделей:

public function tags() 
{ 
    return $this->belongsToMany('Tag')->withTimestamps(); 
} 

И таким образом я могу установить поля временных меток - created_at и updated_at, но как я могу переопределить формат этих дат.

Я перекрываться формат для моделей с использованием следующих:

protected function getDateFormat() 
{ 
    return 'U'; 
} 

Но это, кажется, не работает при использовании sync(). Все записи в таблице сохраняются с использованием формата даты по умолчанию.

+0

Временная метка в сводных таблицах? Вся точка сводной таблицы должна выступать в качестве моста между идентификаторами. Они никогда не должны содержать никаких столбцов, но идентификаторов. Но если вам действительно нужно сделать это по какой-то злой причине, вы можете приблизиться к ней следующим образом: http://stackoverflow.com/questions/24441395/how-to-change-default-format-at-created-at-and- updated-at-value-laravel – Yang

+0

@dave Я просто хочу отслеживать, когда сообщения меняют свои теги, так что это один из способов сделать это. Я спрашиваю, как изменить формат даты КОГДА хранятся значения в базе данных. –

+1

Проведя некоторое время, исследуя внутренние элементы 'Illuminate \ Database \ Eloquent \ Relations \ BelongsToMany', я вижу, что формат времени жестко закодирован. В качестве альтернативного решения вы можете позволить методу timestamps обновления Laravel, как он это делает, а затем создать временную метку из этого формата. Почему нет? Это сделает то, что вы хотите, и вы получите временную метку (просто протестируйте ее, и она отлично работает). – Yang

ответ

0

Использовать Carbon для управления этими данными. Сохраните его, как есть, но определите мутатор для модели. В ближайшее время -> мутатор - это getter для конкретных данных, поступающих из базы данных (в активной записи -> класс модели). Временные метки возвращаются как экземпляр Carbon, поэтому формат очень прост. Мутаторы делают это за кулисами. Может изменяться как даты, такие как свойства модели (шифрование, форматирование и т. Д.). Laravel doc показать, как это сделать.