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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@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.

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

от loyal , 4 месяца назад

@guillermo 

Timestamps в Laravel - это встроенный метод для автоматической установки значений даты создания (created_at) и даты обновления (updated_at) записи в таблице базы данных.


Чтобы использовать timestamps в Laravel, в модели Eloquent необходимо установить свойство $timestamps = true. При этом Laravel самостоятельно обновит дату при каждом создании и обновлении записи.


Пример:

1
2
3
4
class Post extends Model
{
    public $timestamps = true;
}


Для использования timestamps также должны быть включены соответствующие поля created_at и updated_at в таблице базы данных.


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

1
2
3
4
5
class Post extends Model
{
    public $timestamps = true;
    protected $dateFormat = 'U';
}


В данном примере формат даты и времени установлен в Unix timestamp.


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

1
2
3
4
class Post extends Model
{
    public $timestamps = false;
}


В этом случае вы должны будете вручную обновлять поле времени при сохранении модели:

1
2
3
$post = Post::find(1);
$post->updated_at = now();
$post->save();


Это основные способы работы с timestamps в Laravel.