Ici, le code du fichier Model exécutant les requêtes:
/**
* Permet de récupérer plusieurs enregistrements
* @param $req Tableau contenant les éléments de la requête
**/
public function find($req = array()){
$sql = 'SELECT ';
if(isset($req'fields'])){
if(is_array($req'fields'])){
$sql .= implode(', ',$$req'fields']);
}else{
$sql .= $req'fields'];
}
}else{
$sql.='*';
}
$sql .= ' FROM '.$this->table.' as '.get_class($this).' ';
// Liaison
if(isset($req'join'])){
foreach($req'join'] as $k=>$v){
$sql .= 'LEFT JOIN '.$k.' ON '.$v.' ';
}
}
// Construction de la condition
if(isset($req'conditions'])){
$sql .= 'WHERE ';
if(!is_array($req'conditions'])){
$sql .= $req'conditions'];
}else{
$cond = array();
foreach($req'conditions'] as $k=>$v){
if(!is_numeric($v)){
$v = '"'.mysql_real_escape_string($v).'"';
}
$cond] = "$k=$v";
}
$sql .= implode(' AND ',$cond);
}
}
if(isset($req'order'])){
$sql .= ' ORDER BY '.$req'order'];
}
if(isset($req'limit'])){
$sql .= ' LIMIT '.$req'limit'];
}
$pre = $this->db->prepare($sql);
$pre->execute();
return $pre->fetchAll(PDO::FETCH_OBJ);
}
Voici le code des catégories :
/**
* Permet de récup la liste des catégories pour le blog
**/
function index(){
$this->loadModel('Category');
$cats = $this->Category->find();
return $cats;
}
/**
* ADMIN ACTIONS
**/
/**
* Liste les différentes catégories
**/
function admin_index(){
$this->loadModel('Category');
$condition = array('type'=>'Category');
$d'categories'] = $this->Category->find(array(
'fields' => 'id,name',
));
$this->set($d);
}
Et celui des articles:
<?php
class PostsController extends Controller{
/**
* Blog, liste les articles
**/
function index(){
$perPage = 10;
$this->loadModel('Post');
$condition = array('online' => 1,'type'=>'post');
$d'posts'] = $this->Post->find(array(
'conditions' => $condition,
'fields' => 'Post.id,Post.name,Post.slug,Post.created,Category.name as catname,Post.content,Category.slug as catslug',
'order' => 'created DESC',
'limit' => ($perPage*($this->request->page-1)).','.$perPage,
'join' => array('categories as Category'=>'Category.id=Post.category_id')
));
$d'total'] = $this->Post->findCount($condition);
$d'page'] = ceil($d'total'] / $perPage);
$this->set($d);
}
En fait, c'est le code tel quel du tuto qui fonctionne parfaitement en local.
Merci