Laravel: установите метки времени от даты до настоящего момента как int - PullRequest
0 голосов
/ 25 февраля 2019

Я создаю приложение Laravel.Ранее я проектировал базу данных с типами данных datetime для create_at и updated_at, но мой друг предложил мне использовать метку времени вместо datetime, потому что она хороша для разных часовых поясов.

Является ли хорошей идеей использовать метку времени вместо формата даты-времени?Будут ли проблемы с производительностью?Если «Нет», то как мы можем изменить формат временных меток по умолчанию с даты на глобальную метку времени в приложении laravel.

Например (по умолчанию):

$model->created_at = "yyyy-mm-dd h:i-s";
$model->updated_at = "yyyy-mm-dd h:i-s";

Целая временная метка:

$model->created_at = 1523246567;
$model->updated_at = 1523246567;

1 Ответ

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

К сожалению, я не могу ответить на ваши первые два вопроса, но Laravel предоставляет простой способ изменить формат, в котором хранятся ваши даты.

Документация Mutators говорит, что можно установить свойство $dateFormat в вашей модели следующим образом:

/**
 * The storage format of the model's date columns.
 *
 * @var string
 */
protected $dateFormat = 'U';

Формат 'U' будет «Секундами с начала эпохи Unix».Больше форматов доступно в документации php date .

Вам также необходимо изменить миграцию вашей модели.Замените $table->timestamps(); на $table->unsignedInteger('created_at'); и $table->unsignedInteger('updated_at');.

Чтобы использовать определенный формат даты «глобально», т. Е. Для всех ваших моделей, вы можете либо установить формат даты для базовой модели, и позволить всемваших моделей наследуют эту модель или используют черту.См. этот вопрос для примера.

...