Использование поля времени в модели Eloquent - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть поле базы данных, содержащее только время, в моей миграции оно объявлено как

$table->time('time')->default('00:00:00');

Теперь я хочу добавить количество секунд в это поле, используя Eloquent, что-то вроде:

$activetime->time->add(new DateInterval('PT5S'));

(где $ activetime - это объект модели Eloquent)

Первая попытка этого я получил

Call to a member function add() on string

Так что, очевидно, я должен сказать Eloquent, что этоне строка, а время.Самое близкое, что у меня есть, - это поместить в модель защищенные даты в $, но вместо этого я получаю

Unexpected data found.

Я подозреваю, что это потому, что на самом деле это не дата, а только время, но я могуПохоже, не найти много информации о том, как справиться со временем.Есть ли способ решить эту проблему, или мне лучше использовать что-то еще, например dateTime или timestamp (или даже целое число для количества секунд)?То, что я действительно хочу записать, это количество активного времени пользователя для данной даты, поэтому для этого время кажется естественным выбором ...

1 Ответ

0 голосов
/ 05 февраля 2019

Это потому, что Laravel читает time тип базы данных как string, и вы ожидаете DateTime Object.

Добавьте это к своей модели Eloquent:

public function getTimeAttribute($value)
{
    return new \DateTime($value);
}

Вы также можете привести свой time к DateTime Object, используя Приведение атрибутов Laravel , но вам придется добавить некоторую дату к вашему времени, потому что Laravel ожидает правильный формат

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