CakePHP: éxito con $ hasOne, fallo con $ hasMany

Buenos días,

Estoy teniendo problemas con $ hasMany, aunque $ hasOne funciona bien.

Tengo dos modelos, Assignment and AssignmentGroup. La asignación puede tener un AssignmentGroup pero AssignmentGroup puede tener muchas Asignaciones. Aquí están las relaciones:

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

Aquí está el código que estoy ejecutando:

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

Cuando uso $ hasOne en lugar de $ hasMany obtengo el resultado esperado.

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

Sin embargo, cuando uso $ hasMany, cuando lo necesito, las cosas se desmoronan. La consulta no tiene un JOIN.

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

¿Alguien puede explicar lo que está pasando y / o sugerir una solución? Gracias por la ayuda.

Esto podría ser menor, pero siempre me aseguro de usar className en la definición del modelo.

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

Solo para estar seguros ya que el libro dice “los alias para cada modelo deben ser de aplicación única”, me ayuda a mantenerlos en línea.

Además, intente utilizar $hasMany pero $hasMany el contain solo para ver si eso podría ser lo que lo está arruinando.

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

debiera ser:

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