Some suggestions:
1.) Move the recursion in the PropertyController just before findById
$this-Property->recursive = 2;
2.) Use constrained behavior for the Bill and ExpenseType models.
var $actsAs = array('Containable');
... then in PropertiesController do ...
$this->Property->contain(array( 'Bill' => array( 'ExpenseType' ) )); $this->set('property', $this->Property->findById($id));
UPDATE # 1:
Bill model
class Bill extends AppModel { var $actsAs = array('Containable'); public $belongsTo = array( 'Property' => array( 'className' => 'Property', 'foreignKey' => 'property_id', 'conditions' => '', 'fields' => '', 'order' => '' ), 'ExpenseType' => array( 'className' => 'ExpenseType', 'foreignKey' => 'expense_type_id', 'conditions' => '', 'fields' => '', 'order' => '' ), );
ExpenseType Model
class ExpenseType extends AppModel { var $actsAs = array('Containable'); public $hasMany = array( 'Bill' => array( 'className' => 'Bill', 'foreignKey' => 'expense_type_id', 'conditions' => '', 'fields' => '', 'order' => '' ), );
then clear the cache
source share