Bonjour à toutes et à tous,

Je viens à vous car je me retrouve face à un problème depuis quelques heures.
Je n'arrive pas à enregistrer des données dans ma BDD.
J'ai vérifié que les données existaient bien (en faisant un echo elles apparaissent clairement à l'écran).
J'ai vérifié que les données était du bon type. (Je sauvegarde des id, j'ai converti mes id en entiers avec intval() pour être sûr que ce ne soit pas une chaîne de caractères.
J'ai effectué un débug de ma requete et le débug me retourne "false".

Je vous présente le code de mon controller :

<?php
if($this->request->is('post'))
        {
        $d= $this->request->data; //d est le tableau qui recupère les données envoyées par l'admin
        $d'subcategory']'id']=null;
        $d'subcategory']'idCategory'] = intval($d'subcategory']'idCategory']);
        echo $d'subcategory']'idCategory']; // retourne le bon résultat
        echo $d'subcategory']'subCategoryName']; // retourne le bon résultat
        debug($this->Subcategory->save($d, true, array('idCategory','subCategoryName'))); // retourne "false"

            if($this->Subcategory->save($d, true, array('idCategory','subCategoryName'))) // C'est là que ça bug ...
            {
                $this->Session->setFlash("La sous-catégorie a bien été ajoutée !","notif", array('type' => 'success')); //Notification de succes
            }
            else
            {
                $this->Session->setFlash("Une erreur c'est produite, veuillez réessayer SVP.","notif", array('type' => 'danger')); // Notification d'erreur
            }
        }
?>

Voici aussi ma table au cas où vous douteriez qu'il y a un problème.

--
-- Structure de la table `subCategories`
--
CREATE TABLE IF NOT EXISTS `subcategories`(
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `idCategory` int(10) NOT NULL, 
    `subCategoryName` varchar(100) NOT NULL,
    PRIMARY KEY (`id`)
);

Est-ce que quelqu'un aurait une idée ? :)

4 réponses


Lartak
Réponse acceptée

Bonjour.
Tu ne sembles pas trop connaître CakePHP.
Pour commencer, tu devrais avoir

$d'Subcategory']'id']

et non

$d'subcategory']'id']

Ensuite, si tu suivais un minimum les conventions de CakePHP, ta table devrait plutôt ressembler à ceci :

CREATE TABLE IF NOT EXISTS `subcategories`(
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `name` varchar(100) NOT NULL, 
    `category_id` int(10) NOT NULL,
    PRIMARY KEY (`id`)
);

à condition bien sûr, que la table parente se nomme categories.
Bref, avant de vouloir modifier la façon d'utiliser CakePHP de façon personnelle, utilises le framework en utilisant principalement les conventions de celui-ci jusqu'à ce que tu le connaisse suffisamment.

Bonjour,
dans ton cas faudrait savoir ce que tu veux faire déjà si c'est juste avoir une table de sous catégories, à mon avis tu utilise mal cakephp faudrait exprimer ta relation et enfin tu peut utilisé les callback au lieu de faire ça dans le Controller directement,

en attendant d'avoir plus d'explication de ta part.

Cordialement.

Bonjour,

Il est vrai que j'ai un peu de mal avec CakePHP et ses conventions (moi qui avait mes propres habitudes, c'est dur de changer tout cela ^^).

J'ai donc fait comme tu m'as dit et en respectant les conventions tout fonctionne correctement. C'est perturbant mais je vais m'y habituer à force. Merci beaucoup pour ton aide.

Résolu :)

De rien, avec plaisir. :)