Bonsoir,

Petit problème que je n'arrive pas à résoudre (enfin si mais je ne comprends pas pourquoi).

Voici mon MLDR
Projects(<u>project_id</u>,name,#cat_id)
Categories(<u>cat_id</u>,name)

Dans mon modèle Category j'ai donc mis

public $hasMany = array("Project");

et dans mon modèle Project j'ai mis

public $hasOne = array("Category","Client");

Le résultat de

$this->Project->find("all")

me retourne ceci

array(
    (int) 0 => array(
        'Project' => array(
            'id' => '2',
            'name' => 'Project1',
            'description' => 'Description project1',
            'created' => '2012-09-24 11:29:50',
            'modified' => '2012-09-24 11:29:50',
            'category_id' => '3',
            'client_id' => '1'
        )
    ),
    (int) 1 => array(
        'Project' => array(
            'id' => '3',
            'name' => 'test',
            'description' => 'test',
            'created' => '2012-09-24 13:49:19',
            'modified' => '2012-09-24 13:49:19',
            'category_id' => '3',
            'client_id' => '1'
        )
    )
)

Mais je n'arrive pas à récupérer les informations du modèle Catégorie, si je passe le récursive à 0,1 ou 2 j'ai cette erreur SQL qui apparaît

Column not found: 1054 Unknown column 'Category.project_id' in 'on clause'

Pourtant la jointure a bien été ajouté dans mysql.

En revanche quand je met

public $belongsTo= array("Category","Client");

ça fonctionne. Mais ça ne correspond pas à mon mcd.

Si vous pouviez m'éclaircir là dessus ça serait pas de refus.

Merci.

1 réponse


Tit-LoW
Réponse acceptée

Bonjour. je pense tu as pas bien compris le fonctionnement des models de cakePHP. La relation $hasOne = array('Categorie'); signifie que ton MRD serait comme ceci :
Projects(project_id,name)
Categories(cat_id,name,#ptoject_id)
D'ou l'erreur SQL :

Column not found: 1054 Unknown column 'Category.project_id' in 'on clause'

.
La relation belongsTo correspond donc a ton MCD.