Bonjour à tous,
Je viens poster sur le forum car je ne trouve pas de solution à mon problème.
Dans l'idée, je souhaite faire du versionning sur les champs d'une table et ainsi garder les précédentes versions pour revenir en arrière par exemple.
Partant de là, j'ai créé deux tables "objets" et "items" :
CREATE TABLE IF NOT EXISTS `objets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE IF NOT EXISTS `items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`objet_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
`version` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
)
Mes models :
class Objet extends AppModel{
public $hasMany = array('Item');
}
class Item extends AppModel{
public $belongsTo = 'Objet';
}
Une vue:
echo $this->Form->create('Objet');
echo $this->Form->input('id');
echo $this->Form->input('name');
foreach($this->request->data'Item'] as $item){
echo $this->Form->input('Item.'.$item'id'].'.id');
echo $this->Form->input('Item.'.$item'id'].'.value', array('label'=>$item'name']));
}
echo $this->Form->end('Save');
Et mon controller :
class ObjetsController extends AppController{
public $scaffold;
public function vu($id){
$this->Objet->id = $id;
$d = $this->Objet->read();
debug($d);
}
}
Donc je récupère bien mon objet et ses items.
Mais mon problème c'est que je veux récupérer que la dernière version des différents champs dans la table items, cad que je dois récupérer toutes les entrées où "objet_id" égal id de mon Objet, faire une sorte de select distinct sur la colonne "name" où la colonne version a la valeur la plus haute.
Je sais pas si ca parait clair tout ca ...
Peut-être je m'y prend de travers ...
Auriez vous une petite idée pour m'aider ?
Merci d'avance !
See you :)