-
Notifications
You must be signed in to change notification settings - Fork 3
Cookbook versioning
Le versioning est activé par défaut pour tous les modèles étendant iaModelMysql car la propriété versioning vaut true par défaut.
Le versioning nécessite dans le modèle l'existence d'un champs actif de type booléen. Ce champs est nécessaire pour la gestion des tuples supprimés.
Le versioning peut être activé/désactivé en modifiant la valeur de la propriété versioning:
<?php
class MyModel extends iaModelMysql {
public $versioning = true; // or false
public $mapping = array(
'id' => 'id',
// ...
'actif' => 'actif',
// ...
);
}
Dans le cas où le champs de clé primaire ne s'appelle pas id, le modèle doit impérativement redéfinir la propriété primary avec le nom du champs de clé primaire.
<?php
class MyModel extends iaModelMysql {
public $versioning = true; // or false
public $primary = 'identifiant';
public $mapping = array(
'identifiant' => 'identifiant',
// ...
'actif' => 'actif',
// ...
);
}
En principe, la création de version n'est pas gérée manuellement. En effet, un modèle avec versioning activé crée automatiquement une version à chaque modification de données. La méthode iaMysqlModel::version() est d'ailleurs protected.
Il est possible de récupérer n'importe quelle version (existante) pour un enregistrement, en spécifiant le paramètre xversion.
<?php
$model = xModel::load('my', array(
'id' => 12,
'xversion' => 4964
))->get();
Le système de versioning conserve l'opération ayant créé une version (get, put, post, delete). En plus de cela, une opération spéciale, tag permet de créer une version intermédiaire.
Les tags ne contienne aucune modification, ils servent uniquement de jallon:
<?php
$model = xModel::load('my', array(
'id' => 12,
'commentaire' => "Rose-Marie s'est mariée"
))->tag();