Bonjour tout le monde,
Je viens chercher de l'aide car je tente en vain de faire une jointure [SQL]...Ma requête sql à l'air correct, puisque si je l'insère en ligne de commande, cela me retourne un résultat correct.
L'erreur vient lorsque je veux afficher les données dans la vue, il y'a un truc qui doit m'échapper... Il me dit "undefined" pour toutes mes variables. J'ai fait un debug de la variable envoyé, et j'ai bien des tableaux de données....
Voilà mon code, si quelqu'un pourrait m'expliquer ce que je ne sais pas ou ce que je ne fait pas bien... D'avance merci à vous
/* Model Post */
public $hasMany = array(
'Category' => array(
'counterCache' => array('post_count'=>array('Post.online'=>1,'Post.created <= NOW()'))
)
);
/* Model Category */
public $belongTo = 'Category'; /* each category has many posts */
/* Controller Post */
function admin_edit(){
$d'posts'] = $this->Post->find('all', array(
'conditions' => array(
'Post.type'=>'post',
'Post.online>=0'
),
'fields' => array('c.name as category','Post.id as postID','Post.name as
postName','Post.slug','Post.content','Post.created','Post.online'),
'joins' => array(
array(
'table' => 'categories',
'alias' => 'c',
'type' => 'left',
'foreignKey' => 'category_id',
'conditions' => array('c.id = Post.category_id'),
)
)));
$this->set($d);
}
/* debug de $d */
array(
'posts' => array(
(int) 0 => array(
'c' => array(
'category' => 'test'
),
'Post' => array(
'postID' => '7',
'postName' => 'Mon premier articles',
'slug' => 'mon-premier-article',
'content' => '<p>Ça sounds good</p>',
'created' => '2012-03-22 19:59:00',
'online' => '1'
)
),
/* requête SQL */
SELECT `c`.`name` AS `category`, `Post`.`id` AS `postID`, `Post`.`name` AS `postName`, `Post`.`slug`, `Post`.`content`, `Post`.`created`, `Post`.`online` FROM `abhaber`.`posts` AS `Post` left JOIN `abhaber`.`categories` AS `c` ON (`c`.`id` = `Post`.`category_id`) WHERE `Post`.`type` = 'post' AND `Post`.`online`>=0 ORDER BY `Post`.`created` ASC
/* vue */
<?php foreach ($posts as $k=>$v): $v = current($v); ?>
<tr>
<td style="text-align: center;"><?php echo $v'id']; ?></td>
<td style="text-align: left; padding-left: 20px;"><?php echo $v'post']; ?></td>
<td style="text-align: center;"><?php echo $v'online']=='0' ? '<span class="label-important">Hors-ligne</span>' : '<span class="label-success">En Ligne'; ?></td>
<td style="text-align: center;">
<?php echo $this->Html->link('Editer',array('action'=>'edition',$v'id']),array('class'=>'actionLink')); ?>
-
<?php echo $this->Html->link('Supprimer',array('action'=>'delete',$v'id']),array('class'=>'actionLink'),null,'Voulez-vous vraiment supprimer cette page ?'); ?>
</td>
</tr>
<?php endforeach; ?>
/* Erreur affiché */
Undefined index: id [APP\View\Posts\admin_edit.ctp, line 22]
Voilà solution trouvé...Au cas ou ça intéresse quelqu'un, on récupère les données de cette façon :
echo $posts$k]'c']'category'];