Bonjour a tous;
Je suis débutant sur CakePhp
donc mon soucie c'est je veut associer un article a plusieur couleur du coup j'ai créer une table articles_colors avec une association hasAndBelongsToMany dans le model Article.
lors de l'ajout sa marche tres bien mais quand j'essaye de modifier sa me sort cette erreur :

<u><strong>Error: Table article_colors for model ArticleColor was not found in datasource default.</strong></u>

au niveau de mon controller ArticlesController :

if (!empty($this->request->data)) {
                if (isset($article)) {
                    $this->request->data'Article']'id'] = $article'Article']'id'];
                } else {
                    $this->request->data'Article']'id'] = null;
                }
                if ($this->Article->saveAll($this->request->data)) {
                    $this->Session->setFlash("L'article à bien été édité ", "flash", array('class' => 'success'));
                    return $this->redirect(array('action' => 'index'));
                }
            }else if($id){
                $this->request->data = $article;
                $this->loadModel('ArticleColor');
                $this->request->data'Color']'Color'] = $this->ArticleColor->find('list', array('fields' => array('color_id', 'color_id')));

            }
            $brands = $this->Article->Brand->find('list');
            $categories = $this->Article->Category->find('list');
            $sizes = $this->Article->Size->find('list');
            $colors = $this->Article->Color->find('list');
            $this->set(compact('categories', 'brands', 'sizes', 'colors'));
        }

Merci de me donnée un coup de main!

2 réponses


antograssiot
Réponse acceptée

Vérifie dans tes modèles, peut-etre as-tu spécifié la valeur 'joinTable' => 'article_colors', au lieu de articles_colors ou oublié un 's' dans l'un des champs 'id' d'une de tes tables.

yougho
Auteur

Merci pour ta repense. Le problème été au niveau du loadModele il fallais ajouter un s au premier modèle et laisser au singulier le second !