Tutoriel ACICRUD #2

Dans ce deuxième tutoriel sur l’utilisation de la librairie Acicrud nous allons voir comment lire des données depuis la base de données.

Comme expliqué dans les précédents billets, le principe d’Acicrud est d’ajouter une couche applicative objet dans les modèles afin de générer des objets fidèles au modèle de données représenté par la base de données.

Concrètement, Acicrud permet d’intéragir avec la base de données en  manipulant directement des objets PHP.

Prérequis

Nous supposerons utiliser le modèle exemple précédemment créé dans le turoriel #1.

Nous supposerons également que notre table SQL est bâtie sur le modèle de donnée suivant :

Exemple { idExemple, title, description, date }

Lecture d’une ligne en base de données

La lecture d’une ligne se fait à partir de son identifiant (clé primaire), la méthode read() retourne un objet fidèle à la ligne en base de données :

<?php
 
$this->load->model('exemple');
 
try {
	$exemples = $this->exemple->read(1); //Primary key id
} catch(Exception $e) {
	echo "Wrong ID";
}
 
var_dump($o);
 
//Produces
/*
object(stdClass) (4) {
  ["idExemple"]=>
  string(2) "1"
  ["title"]=>
  string(8) "title..."
  ["description"]=>
  string(15) "description..."
  ["date"]=>
  string(19) "2009-04-30 21:00:00"
}
*/
 
?>

L’objet $o représente physiquement l’élément lu en base de données. Ses attributs portent les noms de champs et ses valeurs sont les données de la ligne.

Lecture de toutes les lignes d’une table en base de données

Il est très fréquent de devoir récupérer l’ensemble des données d’une table. Acicrud fournit une méthode pour cela s’appelant getAll().

Cette méthode prend deux paramètres optionnels qui sont $nb ainsi que $order.

$nb permet d’effectuer un LIMIT SQL afin de limiter le nombre de lignes retournées par la requête.

$order est un tableau qui permet de trier les données, par exemple pour trier par title ascendant, il faudra passer un tableau indexé :

array(‘title’ , ‘ASC’).

La métode getAll() va retourner un tableau d’objets fidèles qui peuvent par exemple être facilement passés à une vue pour affichage.

<?php
 
$this->load->model('exemple');
 
try {
 
	//Retrieve an array of objects, this array can be passed to a view for displaying data
	foreach($this->exemple->getAll(10, array('date', 'DESC')) {
 
		var_dump($o); 
 
		//Produces
		/*
		object(stdClass) (4) {
		  ["idExemple"]=>
		  string(2) "the id"
		  ["title"]=>
		  string(8) "the title"
		  ["description"]=>
		  string(15) "the description"
		  ["date"]=>
		  string(19) "the date"
		}
		*/
	}
 
} catch(Exception $e) {
	echo $e->getMessage();
}
 
?>

Support and feedback are both available in English and in French.

Tutoriel suivant

» Insérer des données avec Acicrud

Partager ce billet :


  • Print
  • PDF
  • RSS
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • HelloTxt
  • Reddit
  • Scoopeo
  • Technorati
  • Twitter
  • viadeo FR
  • Wikio FR

Mots clés pour ce billet :