Как работать с датами ввода в приложении MySql / Laravel (5.6) / AngularJs? - PullRequest
0 голосов
/ 16 мая 2018

В моем приложении пользователь может указать дату в форме через средство выбора даты. При этом дата имеет следующий формат: «2018-05-16T12: 45: 30Z».

Затем я хочу сохранить его в базе данных MySql в столбце TIMESTAMP. Позже пользователь может редактировать свои данные. Следовательно, средство выбора даты должно быть инициализировано датой, исходящей с сервера, предварительно сохраненной.

Для этого я создал аксессор и мутатор:

public function setDateNameInputAttribute($value)
{
    $this->attributes['date_name_input'] =  Carbon::createFromFormat('Y-m-d\TH:i:s\Z', $value);
}

public function getDateNameInputAttribute($value)
{
    return Carbon::parse($value)->format('Y-m-d\TH:i:s\Z');
}

Этот код работает нормально: мой интерфейс считывает даты UTC (Zulu), и я могу вставить метки времени в свою базу данных.

Однако, это не идеально.

  1. Допустим, по какой-то причине мне нужно добавить один час к сохраненной дате

     $myObject = MyClass::find(1);
     $theDate = $myObject->dateNameInput;
    

Теперь $ theDate является строкой "T Z format" из-за метода доступа. Я мог бы воссоздать объект Carbon, чтобы выполнить добавление, но я думаю, что этот переход Carbon -> string -> Carbon будет безобразным. Как я могу сделать хорошую операцию?

  1. Если в моих приложениях много входных дат с разными названиями моделей, есть ли способ обобщить мой метод доступа и мутатор?

Собственно, мой первый подход хорош?

Спасибо за чтение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...