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


djtec
Réponse acceptée

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

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