Как хранить объекты Carbon в MySQL с помощью Laravel

Итак, я знаю, что Laravel хранит свои «created_at» и «updated_at» как объект Carbon. По крайней мере, каждый раз, когда я пытаюсь их получить, они возвращаются в виде углерода. Итак, у меня есть объект Carbon, который я хочу сохранить в столбце «premium_until». Теперь, как мне это сделать? Должен ли я делать $table->timestamp('premium_until'); или $table->date('premium_until'); при настройке схемы? Кроме того, могу ли я просто сделать $user->premium_until = $carbonObject; или мне нужно преобразовать его в строку? Заранее спасибо!


person Martijn    schedule 30.11.2013    source источник


Ответы (2)


Eloquent предлагает удобный способ работы с датами.
Просто определите метод getDates в вашей модели Eloquent, который возвращает массив имен столбцов, которые должны быть автоматически преобразованы Eloquent в экземпляры Carbon!

public function getDates()
{
    return array(static::CREATED_AT, static::UPDATED_AT, static::DELETED_AT, 'premium_until');
}
person Andreyco    schedule 02.12.2013

Вместо определения метода getDates теперь можно установить атрибут $dates в вашей модели Eloquent. Преимущество по сравнению с предыдущим ответом заключается в том, что вам не нужно явно (пере) определять даты Eloquent (например, created_at):

protected $dates = ['premium_until'];
person Jarno    schedule 15.09.2015