Normal dans ton find tu demande seulement le champ Subcategory.name dans fields donc met aussi Subcategory.id et Subcategory.category_id ou ne met rien vu que tu veux tout les champs
Bonjour :)
Je rencontre actuellement un problème pour la création de mon site.
Je stocke dans ma BDD des catégories et des sous-catégories de cette manière :
--
-- Structure de la table `categories`
--
CREATE TABLE IF NOT EXISTS `categories`(
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
);
--
-- Structure de la table `subCategories`
--
CREATE TABLE IF NOT EXISTS `subcategories`(
`id` int(10) NOT NULL AUTO_INCREMENT,
`category_id` int(10) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
);
Chaque sous-catégorie dépendant d'une catégorie je voudrais afficher dans ma vue quelque chose de cette forme :
CATEGORY 1 :
-> Subcategory 1.1
-> Subcategory 1.2
-> Subcategory 1.3
CATEGORY 2 :
-> Subcategory 2.1
CATEGORY 3 :
-> Subcategory 3.1
-> Subcategory 3.2
etc ...
J'ai donc effectué ceci dans mon controller:
<?php
$categories = $this->Category->find('list', array(
'fields' => array('Category.name'),
'order' => array('Category.name')
));
$this->set(compact('categories')); // On les envoit à la vue.
$this->loadModel('Subcategory');
$subcategories = $this->Subcategory->find('all', array(
'fields' => array('Subcategory.name'),
'order' => array('Subcategory.name')
));
$this->set(compact('subcategories')); // On les envoit à la vue.
?>
Et ceci dans ma vue :
<?php
<?php
foreach ($categories AS $category) //On affiche les catégories
{
echo "<h4>".$category."</h4>";
foreach($subcategories AS $subcategory)
{
if($subcategory'category_id'] == $category'id']) //On affiche les sous catégorie correspondante aux catégories
{?>
<li><?php echo $this->Html->link($subcategory'name'], array('action' => 'topics', 'controller' =>'Courses', $subcategory'name'])); ?></li>
<?php
}
}
?>
<?php
}
?>
?>
Malheureusement j'ai ces jolis messages d'erreur qui s'affichent pour chaque catégorie ...
Warning (2): Illegal string offset 'category_id' [APP\View\Courses\index.ctp, line 13]
Warning (2): Illegal string offset 'id' [APP\View\Courses\index.ctp, line 13]
Warning (2): Illegal string offset 'category_id' [APP\View\Courses\index.ctp, line 13]
Warning (2): Illegal string offset 'id' [APP\View\Courses\index.ctp, line 13]
Pourtant j'ai bien précisé "all" dans ma requète, je ne comprends pas ...
2 réponses
En effet cela fonctionne désormais, j'avais été trop vite dans mes relectures et n'avais pas vu cette erreur.
Merci beaucoup ! :)
Résolu ;)