Maison  >  Article  >  cadre php  >  Comment annuler Create_at dans Laravel

Comment annuler Create_at dans Laravel

PHPz
PHPzoriginal
2023-04-21 10:06:191020parcourir

Dans le framework Laravel, chaque modèle Eloquent contient deux champs d'horodatage,created_at et update_at, par défaut. Ces deux champs enregistrent l'heure de création et de mise à jour du modèle. L'avantage est qu'il est pratique d'enregistrer l'heure de mise à jour des données et d'implémenter certaines fonctions, comme le tri par heure de création et heure de mise à jour, etc.

Cependant, dans certains scénarios, nous n'aurons peut-être pas besoin de ces deux champs d'horodatage. Par exemple, certaines anciennes tables de base de données peuvent ne pas avoir ces deux champs, ou nous n'avons pas du tout besoin d'enregistrer l'heure de création et de mise à jour des données. Dans ce cas, nous pouvons annuler Create_at et Updated_at en ajoutant les deux lignes de code suivantes au modèle :

public $timestamps = false;

Cela annulera les champs Created_at et Updated_at dans le modèle. Cependant, il convient de noter que l'annulation de ces deux champs d'horodatage entraînera l'échec de certaines fonctions intégrées de Laravel. Par exemple, le modèle ne peut pas être trié selon les champs create_at et update_at, et il ne peut pas non plus enregistrer automatiquement l'heure de création et de mise à jour des données.

Si nous n'avons besoin d'annuler qu'un seul des champs d'horodatage, comme onlycreated_at, alors nous pouvons faire ceci :

// 只取消 created_at
const UPDATED_AT = 'updated_at';

Cette méthode consiste à attribuer la constante UPDATED_AT à la chaîne update_at, et par défaut la valeur de UPDATED_AT est mise à jour_at , donc comme ça, n'annulez que create_at.

Après avoir annulé ces champs d'horodatage, si nous devons enregistrer notre propre heure de création de données et notre heure de mise à jour, nous devons alors écrire manuellement du code pour y parvenir. Voici un exemple :

// 在模型中实现自定义时间戳字段
protected $dateFormat = 'U';
protected static function boot()
{
    parent::boot();
    static::creating(function ($model) {
        $model->create_time = $model->freshTimestamp();
    });
    static::updating(function ($model) {
        $model->update_time = $model->freshTimestamp();
    });
}

Dans cet exemple, nous définissons deux champs, create_time et update_time, dans le modèle pour enregistrer l'heure de création et l'heure de mise à jour des données. En même temps, nous modifions le format d'heure par défaut en définissant l'attribut $dateFormat. Dans la méthode de démarrage, nous attribuons des valeurs à create_time et update_time via les événements de création et de mise à jour. La méthode freshTimestamp peut obtenir le dernier horodatage.

Pour résumer, l'annulation de Created_at et Updated_at peut être réalisée en ajoutant $timestamps = false dans le modèle ou en modifiant la constante UPDATED_AT. L'annulation de ces champs d'horodatage affectera certaines fonctions intégrées dans Laravel, telles que le tri et l'enregistrement automatique du temps, etc. Si vous devez implémenter vous-même l’enregistrement d’horodatage, vous pouvez le faire en écrivant manuellement du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn