Another way of linking to table relationship is to use bindModel to force Join.
Below is a code that binds 4 tables Items->Categories->Sections->divisions. You can find anything within the range of the relationship.
$this->unbindModel(array(
'belongsTo' => array('Category')
));
$this->bindModel(array(
'hasOne' => array(
'Category' => array(
'foreignKey' => false,
'conditions' => array('Category.id = Item.category_id')
),
'Section' => array(
'foreignKey' => false,
'conditions' => array('Section.id = Category.section_id')
)
'Division' => array(
'foreignKey' => false,
'conditions' => array('Division.id = Section.division_id')
)
)
));
$result = $this->find('first', array(
'conditions' => array('Item.id' => $id),
'contain' => array('Category', 'Section', 'Division'),
'fields' => array('Division.id')
));
By doing this you can freely query anything in the range of the tables.
More Info here: http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations