[environment]
name = development
adapter = mysql1
[development:mysql1]
adapter = mysql
database = developpeurlamp
username = username
password = password
host = localhost
[development:mysql2]
adapter = mysql
database = developpeurlamp2
username = username
password = password
host = localhost
[test:mysql1]
adapter = mysql
database = test
username = username
password =
host = localhost
[production:mysql1]
adapter = mysql
database = production
username = username
password =
host = localhost
La section [environment] permet d'identifier l'adaptateur à utiliser (mode ETL en développement).
a) par instantiation de la classe ttgDatabase, ci-dessous un exemple :
$db = new ttgDatabase("development");
if(!$result = $db->_adapter->query("select * from categorie limit 1"))
{
$error = $test->_adapter->_getErrors();
echo $error['text'];
}
else
{
var_dump($result);
}
Note : la méthode query() retourne un tableau (clé : n° de l'occurence, valeur : tableaux contenant la paire colonne/valeur de l'occurence), la méthode exec() retourne le nombre de lignes affectés par la requête (utilisation : UPDATE, DELETE, INSERT).
b) par l'utilisation de la fabrique de requête ttgQueryFactory :
$sql = ttgQueryFactory::prepare('ttgSelect');
$sql->reset();
$where = array('id' => $iterator->id);
$query_where = array();
foreach ($where as $key => $value)
{
array_push($query_where, $sql->eq($key,$value));
}
$sql->select('*');
$sql->from('categorie');
$sql->where($query_where);
$results = $sql->query();
var_dump($results);
c) par l'utilisation des modèles :
En premier lieu, il faut créer le modèle de la page courante, dans mon cas : models/presentation.php :
class Presentation extends ttgRecord
{
// nom de la table
protected $_table = 'categorie';
// nom de la clé primaire
protected $_primary = 'id';
// Note : il n'est pas neccessaire de déclarer le constructeur
public function __construct()
{
parent::__construct();
}
}
Les modèles héritent de la classe ttgRecord, qui contient par exemple la méthode findLast() permettant d'obtenir les valeurs du dernier enregistrement ordonnée par $column :
public function findLast($column)
{
//initialisation
$sql = ttgQueryFactory::prepare('ttgSelect');
$sql->reset();
$sql->select('*');
$sql->from($this->_table);
$sql->orderBy($column, 'DESC');
$sql->limit('1');
$results = $sql->query();
if(!empty($results))
{
$record = new ttgRecord($this->_table, $this->_primary);
$record->_new_record = false;
$record->fromArray($results[0]);
return $record;
}
return null;
}
L'utilisation dans la vue est simple (je l'espère), l'exemple suivant permet d'obtenir la dernière occurence :
$model = new Presentation();
$lastoccurence = $model->findLast('id');
echo $lastoccurence->titre;
Si on veut faire une mise à jour du titre :
$lastoccurence->titre = "update titre";
$lastoccurence->descriptif = "update descriptif";
$lastoccurence->save();
Effacer l'occurence :
$lastoccurence->delete();
La méthode save() permet d'insérer un nouveau jeu de donnée :
$model->titre = "new titre";
$model->save();
Pour l'effacer :
$model->titre = "new titre";
$model->delete(array('titre' => 'new titre'));