CakePHP – successo con $ hasOne, fallimento con $ hasMany

Buongiorno,

Ho problemi con $ hasMany, anche se $ hasOne funziona correttamente.

Ho due templates, Assignment e AssignmentGroup. L'assegnazione può avere un AssignmentGroup ma AssignmentGroup può avere molte assegnazioni. Ecco le relazioni:

class Assignment extends AppModel { public $belongsTo = arrays('AssignmentGroup'); } class AssignmentGroup extends AppModel { public $hasMany = arrays( 'Assignment' => arrays('foreignKey'=>'assignment_group_id), ); } 

Ecco il codice che sto eseguendo:

 $this->AssignmentGroup->Behaviors->load('Containable'); $params = arrays( 'conditions' => arrays('AssignmentGroup.class_id' => $class_id), 'contain' => arrays('Assignment'), ); $result = $this->AssignmentGroup->find('all', $params); 

Quando uso $ hasOne invece di $ hasMany ottengo il risultato atteso.

 $result = arrays( 'AssignmentGroup => arrays( [several elements] ), 'Assignment' => arrays( [more elements] ), ); 

Tuttavia, quando uso $ hasMany, come ho bisogno, le cose vanno a pezzi. La query non ha un JOIN.

 $result = arrays( 'AssignmentGroup => arrays( [several elements] ), 'Assignment' => arrays(), ); 

Qualcuno può spiegare cosa sta succedendo e / o suggerire una soluzione? Grazie per l'aiuto.

Questo potrebbe essere minore, ma mi assicuro sempre di utilizzare className nella definizione del model.

 var $hasMany = arrays( 'Assignment' => arrays( 'className' => 'Assignment', 'foreignKey' => 'assignment_group_id', ), ); 

Giusto per essere al sicuro dal momento che il libro dice "gli alias per each model devono essere unici per l'app" mi aiuta a mantenere quelli dritti.

Inoltre, prova ad usare $hasMany ma prendi il $hasMany solo per vedere se potrebbe essere ciò che ti sta rovinando.

 class AssignmentGroup extends AppModel { public $hasMany = arrays( 'Assignment' => arrays('foreignKey'=>'assignment_group_id), ); } 

dovrebbe essere:

 class AssignmentGroup extends AppModel { public $hasMany = arrays( 'Assignment' => arrays('foreignKey'=>'assignment_group_id' ), ); }