Présentation de l'ORM du framework Tortugas (site dédié bientôt disponible) :

I- Identifiants de connection :
Les identifiants de connection à la base de donnée (pour le moment, seul le moteur MySQL est disponible) doivent être déclarés dans un fichier de configuration à la façon Ruby on Rails.
Dans le dossier config/, ouvrez le fichier database.ini. Le fichier se présente comme suit :

[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).

II- 3 modes d'utilisations de la base de donnée dans les vues :

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'));