Как правильно работать с timestamp в laravel?

Пользователь

от guillermo , в категории: PHP , год назад

Как правильно работать с timestamp в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от edyth , год назад

@guillermo 

Timestamps в Laravel используются для автоматической установки значений даты создания и обновления записи в базе данных при сохранении модели. Обычно они представляют собой два поля: created_at и updated_at.


Чтобы использовать timestamp в Laravel, нужно в модели указать public $timestamps = true;. Также необходимо добавить поля created_at и updated_at в таблицу в базе данных. Эти поля должны быть типа timestamp.


Пример:

1
2
3
4
5
6
7
8
class User extends Model
{
    public $timestamps = true;

    protected $fillable = [
        'name', 'email', 'password',
    ];
}


При сохранении модели Laravel автоматически устанавливает значение поля created_at на текущую дату и время, а значение поля updated_at обновляется при каждом сохранении.


Если вы хотите изменить формат даты и времени, вы можете использовать свойство $dateFormat в модели:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class User extends Model
{
    public $timestamps = true;

    protected $dateFormat = 'U';

    protected $fillable = [
        'name', 'email', 'password',
    ];
}


В этом примере мы установили формат даты и времени для created_at и updated_at в Unix-время.


Если вам нужно использовать только одно поле updated_at и не хотите, чтобы Laravel устанавливал значение поля created_at, вы можете установить $timestamps = false и вручную управлять этими полями:

1
2
3
4
5
6
7
8
class User extends Model
{
    public $timestamps = false;

    protected $fillable = [
        'name', 'email', 'password',
    ];
}


Теперь вы должны явно указать значение для поля updated_at при сохранении модели:

1
2
3
4
5
6
7
$user = new User([
    'name' => 'John Doe',
    'email' => '[email protected]',
    'password' => bcrypt('secret'),
]);
$user->updated_at = now();
$user->save();


Это все, что вам нужно знать, чтобы работать с timestamp в Laravel.