Maison > cadre php > YII > Comment définir le tutoriel horodat

Comment définir le tutoriel horodat

百草
Libérer: 2025-03-06 14:18:15
original
816 Les gens l'ont consulté

YII Framework Timestamp Retting Tutorial

Ce tutoriel vous guidera à travers la configuration et la personnalisation des horodatages (Created_at et Updated_at) dans vos modèles YII. YII fournit des fonctionnalités intégrées pour gérer automatiquement ces horodatages, simplifiant les interactions de la base de données et garantissant l'intégrité des données. Nous couvrirons diverses méthodes et options de personnalisation.

Comment générer automatiquement des horodatages dans mes modèles YII?

YII offre un moyen simple de générer automatiquement created_at et updated_at horodatage utilisant la propriété behaviors dans votre modèle. Cela exploite le TimestampBehavior qui gère la population automatique de ces attributs.

Pour implémenter cela, ajoutez le TimestampBehavior à la méthode behaviors() de votre modèle:

<?php

namespace app\models;

use yii\db\ActiveRecord;
use yii\behaviors\TimestampBehavior;

class MyModel extends ActiveRecord
{
    public static function tableName()
    {
        return 'my_table';
    }

    public function behaviors()
    {
        return [
            TimestampBehavior::class,
        ];
    }

    // ... other model code ...
}
Copier après la connexion
Copier après la connexion

Ce simple ajout apparaît automatiquement created_at lors de la création d'enregistrements et updated_at sur chaque mise à jour. Le comportement suppose que votre tableau a des colonnes nommées created_at et updated_at d'un type de données horodomagistes approprié (par exemple, TIMESTAMP, DATETIME). Si vos noms de colonne diffèrent, vous pouvez les spécifier à l'aide de la propriété attributes dans la configuration TimestampBehavior:

public function behaviors()
{
    return [
        [
            'class' => TimestampBehavior::class,
            'attributes' => [
                ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
                ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
            ],
            //Optional:  Customize value attribute (see next section for details)
            //'value' => new Expression('NOW()'),
        ],
    ];
}
Copier après la connexion
Copier après la connexion

Cela permet un contrôle à grain fin sur les différents moyens de gérer les événements d'insertion et de mise à jour. Pour gérer les horodatages, bien que le comportement soit généralement la méthode préférée et la plus efficace. Les approches alternatives incluent:

  • horodatage manuel: Vous pouvez définir manuellement les horodatage dans la méthode beforeSave() de votre modèle. Cela offre plus de contrôle mais nécessite plus de code et augmente le risque d'erreurs s'il n'est pas géré soigneusement.
<?php

namespace app\models;

use yii\db\ActiveRecord;
use yii\behaviors\TimestampBehavior;

class MyModel extends ActiveRecord
{
    public static function tableName()
    {
        return 'my_table';
    }

    public function behaviors()
    {
        return [
            TimestampBehavior::class,
        ];
    }

    // ... other model code ...
}
Copier après la connexion
Copier après la connexion
  • Déclencheurs de la base de données: Vous pouvez créer des déclencheurs de base de données pour mettre à jour automatiquement les horodatages. Cette approche est spécifique à la base de données et nécessite une connaissance de SQL. Il découple la gestion de l'horodatage de votre modèle YII mais ajoute de la complexité à la maintenance de la base de données.
  • En utilisant un comportement personnalisé: pour une personnalisation plus avancée au-delà de ce que TimestampBehavior offre, vous pouvez créer votre propre comportement étendant TimestampBehavior ou en créer une complètement nouvelle. Cela offre la plus grande flexibilité, mais nécessite une compréhension plus profonde du mécanisme de comportement de YII.

Puis-je personnaliser le format horodatage dans mon application YII?

Alors que le TimestampBehavior n'autorise pas directement le format de la détention Attributs d'horodatage. Vous pouvez utiliser une pour obtenir une génération d'horodatage personnalisée, par exemple, pour utiliser une fonction spécifique de votre système de base de données. yiidbExpression

Par exemple, pour toujours utiliser la fonction de la base de données

(indépendamment de votre fuseau horaire PHP): NOW()

public function behaviors()
{
    return [
        [
            'class' => TimestampBehavior::class,
            'attributes' => [
                ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
                ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
            ],
            //Optional:  Customize value attribute (see next section for details)
            //'value' => new Expression('NOW()'),
        ],
    ];
}
Copier après la connexion
Copier après la connexion
N'oubliez pas pour ajuster votre type de base de données et vos paramètres d'expression de la base de données spécifiques. Le formatage à des fins d'affichage doit être géré dans votre vue à l'aide des fonctions de date de PHP ou des assistants de formatage de date de YII. Par exemple, l'utilisation de

dans votre vue formara l'horodatage en fonction des paramètres de votre application. Yii::$app->formatter->asDate($model->created_at)

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal