Bonjour, j'aimerai mettre en relation des données comme par exemple un article avec une catégorie sauf que moi il s'agit de question.
Dans ma base j'ai 2 tables que voici :

CREATE TABLE questions
 (
   id INT(32) NOT NULL ,   
   libelle VARCHAR(255) NOT NULL ,
   category_id INT(3) NOT NULL ,
   ask_id INT(10) NULL , 
   , PRIMARY KEY (id) 
 );
CREATE TABLE IF NOT EXISTS categories
 (
   id INT(3) NOT NULL ,
   libelle VARCHAR(60) NOT NULL ,
   slug varchar(60) NOT NULL  
   , PRIMARY KEY (id) 
 );
ALTER TABLE questions 
  ADD FOREIGN KEY FK_QUESTIONS_CATEGORIES (category_id)
      REFERENCES categories (id) ;

J'aimerai afficher dans quelle catégorie se trouve une question le hic c'est que je n'y arrive pas.
Dans mon Model Question j'ai ceci ->

public $belongsTo = array('Category');

Dans mon Controller Questions j'ai ceci ->

public $uses=array('Questions'); 
        public function index(){
            debug($this->Questions->find('all'));
        }

Mais lorsque je vais voir ma page je n'ai pas La catégorie approprié qui s'affiche.

array(
    (int) 0 => array(
        'Questions' => array(
            'id' => '1',
            'category_id' => '1',
            'ask_id' => '2',
            'libelle' => 'Question 1'
        )
}

Savez vous d'ou viens le problème merci de vos réponse bonne journée.

Ps: Version 2.3.2 de CakePhp

6 réponses


justclara42
Réponse acceptée

salut, il me semble de mémoire qu'il faux définir scertain paramètre.

c'est moi je procède ainsi:

public $belongsTo = array(
        'Category' => array(
            'className' => 'Category',
            'foreignKey' => 'category_id',
            'conditions' => '',
            'fields' => 'name',
            'order' => ''
        )
            );

ça marche chez moi peux importe le contrôler qui est associé au catégories.

Tulifer
Auteur
Réponse acceptée

J'ai lu je ne sais plus ou qu'il y avait des problèmes avec la 2.3.2 donc j'ai pris une ancienne version la 2.3.1 et sa marche. Mais je trouve sa bizarre que cela ne fonctionne pas sur le 2.3.2.

leFuret17
Réponse acceptée
debug($this->Questions->find('all'));

Avec

debug($this->Question->find('all'));

et sans

public $uses=array('Questions');

Juste

public $belongsTo = array('Category');

est suffisant si aucun paramètre particulier est demander.
A mon devrait ca devrait fonctionner....
et sans la relation SQL entre les 2 tables sauf si tu veux en plus une gestion des enregistrements par mysql.

Tulifer
Auteur

Bonjour, merci de t'as réponse mais cela ne marche toujours pas chez moi.

Ps: Version 2.3.2 de CakePHP

et si tu fais un

debug($this->Questions->Category->find('list'));

tu as bien la liste de tes catégories ?

Tulifer
Auteur

Non justement. Mais un joli message d'erreur.
Error: Call to a member function find() on a non-object