settings[$model->name] = am (array('classField' => 'class', 'foreignKey' => 'foreign_id'),$config); } function afterFind (&$model, $results, $primary = false) { extract($this->settings[$model->name]); if ($primary && isset($results[0][$model->alias][$classField]) && $model->recursive > 0) { foreach ($results as $key => $result) { $associated = array(); $class = $result[$model->alias][$classField]; $foreignId = $result[$model->alias][$foreignKey]; if ($class && $foreignId) { $result = $result[$model->alias]; if (!isset($model->$class)) { $model->bindModel(array('belongsTo' => array( $class => array( 'conditions' => array($model->alias . '.' . $classField => $class), 'foreignKey' => $foreignKey ) ))); } $associated = $model->$class->find(array($class . '.id' => $foreignId), array('id', $model->$class->displayField), null, -1); $associated[$class]['display_field'] = $associated[$class][$model->$class->displayField]; $results[$key][$class] = $associated[$class]; } } } elseif(isset($results[$model->alias][$classField])) { $associated = array(); $class = $results[$model->alias][$classField]; $foreignId = $results[$model->alias][$foreignKey]; if ($class && $foreignId) { $result = $results[$model->alias]; if (!isset($model->$class)) { $model->bindModel(array('belongsTo' => array( $class => array( 'conditions' => array($model->alias . '.' . $classField => $class), 'foreignKey' => $foreignKey ) ))); } $associated = $model->$class->find(array($class.'.id' => $foreignId), array('id', $model->$class->displayField), null, -1); $associated[$class]['display_field'] = $associated[$class][$model->$class->displayField]; $results[$class] = $associated[$class]; } } return $results; } } ?>