setAttribute(Doctrine::ATTR_COLL_KEY, 'language_id'); $this->hasOne('Cms_Category as category', array('local' => 'category_id', 'foreign' => 'id', 'onDelete' => 'CASCADE')); } public function setTableDefinition() { $this->hasColumn('name', 'string',256); $this->hasColumn('category_id', 'integer',11); $this->hasColumn('language_id', 'integer',11); $this->option('collate', 'utf8_unicode_ci'); $this->option('charset', 'utf8'); $this->option('type', 'INNODB'); $this->index('index_category', array('fields' => 'category_id')); $this->index('index_language', array('fields' => 'language_id')); } } class Cms_Category extends Doctrine_Record { public function setUp() { $this->ownsMany('Cms_CategoryLanguages as langs', array('local' => 'id', 'foreign' => 'category_id')); } public function setTableDefinition() { $this->hasColumn('created', 'timestamp'); $this->hasColumn('parent', 'integer', 11); $this->hasColumn('position', 'integer', 3); $this->hasColumn('active', 'integer', 11); $this->option('collate', 'utf8_unicode_ci'); $this->option('charset', 'utf8'); $this->option('type', 'INNODB'); $this->index('index_parent', array('fields' => 'parent')); } }