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.
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 ... }
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()'), ], ]; }
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:
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 ... }
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. 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
(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()'), ], ]; }
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!