rendered paste body<?phpdefine('SF_ROOT_DIR', realpath(dirname(__file__).'/..'));define('SF_APP', 'frontend');define('SF_ENVIRONMENT', 'dev');define('SF_DEBUG', true);require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');// initialize database managersfContext::getInstance(); // $databaseManager = new sfDatabaseManager();// $databaseManager->initialize();$conn = sfDoctrine::connection();$package = new Package();$packageverison = new PackageVersion();$packageverison->name = 'My Package';$package->Version[] = $packageverison;$extra = $conn->getTable('Extra')->find(1);$package_extra = new PackageVersionExtraLink();$package_extra->extra_id = $extra->id;$package_extra->description = 'This is a test';var_dump($package_extra->toArray());die();$package->Version[0]->ExtraLink[] = $package_extra;$package->save();-------------# cat lib/model/Package.php<?php class Package extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn('created_at', 'integer'); $this->hasColumn('meta_description', 'string', 255); $this->hasColumn('has_published', 'boolean'); $this->hasColumn('has_draft', 'boolean'); } public function setUp() { $this->setAttribute(Doctrine::ATTR_LISTENER, new Listener_CreateTime()); $this->ownsMany('PackageVersion as Version', 'PackageVersion.package_id'); } }-----------------# cat lib/model/PackageVersion.php<?php class PackageVersion extends BaseVersion { public function setTableDefinition() { $this->hasColumn('package_id', 'integer'); $this->hascolumn('current_state', 'enum', 11, array('default' => 'Draft')); $this->setEnumValues('current_state', array(10 => 'Published', 20 => 'Approved', 30 => 'Committed', 40 => 'Draft', 50 => 'Deleted')); $this->hasColumn('created_at', 'integer'); $this->hasColumn('updated_at', 'integer'); $this->hasColumn('name', 'string', 255); } public function setUp() { $chain = new Doctrine_EventListener_Chain(); $chain->add(new Listener_CreateUpdateTime()); $this->setAttribute(Doctrine::ATTR_LISTENER, $chain); $this->hasOne('Package', 'PackageVersion.package_id'); $this->hasMany('PackageVersionExtraLink as ExtraLink', 'PackageVersionExtraLink.package_version_id'); } }--------------------- # cat lib/model/PackageVersionExtraLink.php<?php class PackageVersionExtraLink extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn('extra_id', 'integer'); $this->hasColumn('package_version_id', 'integer'); $this->hasColumn('description', 'string', 255); } public function setUp() { $this->hasOne('Extra', 'PackageVersionExtraLink.extra_id'); $this->hasOne('PackageVersion', 'PackageVersionExtraLink.package_version_id'); } }