public function testBothMappingDrivers() { $builder = new BaseActiveRecord(new ClassMetadataInfo('foo')); $builder->setMappingDriver(BaseActiveRecord::MAPPING_STATIC_PHP | BaseActiveRecord::MAPPING_ANNOTATION); $this->assertTrue($builder->isMappingStaticPhp()); $this->assertTrue($builder->isMappingAnnotation()); }
static public function setUpBeforeClass() { $metadata = new ClassMetadataInfo('Propel\\Tests\\Builder\\ORM\\Book'); $metadata->mapField(array('fieldName' => 'id', 'type' => 'integer', 'id' => true)); $metadata->mapField(array('fieldName' => 'name', 'type' => 'string', 'columnName' => 'foo_name', 'length' => 25, 'nullable' => true, 'columnDefinition' => 'Hello world')); $metadata->mapField(array('fieldName' => 'status', 'type' => 'integer', 'default' => 23, 'precision' => 2, 'scale' => 2, 'unique' => 'unique_status')); $metadata->mapOneToOne(array( 'fieldName' => 'author', 'targetEntity' => 'Doctrine\Tests\ORM\Tools\EntityGeneratorAuthor', 'mappedBy' => 'book', 'joinColumns' => array( array('name' => 'author_id', 'referencedColumnName' => 'id') ), )); $metadata->mapManyToMany(array( 'fieldName' => 'comments', 'targetEntity' => 'Doctrine\Tests\ORM\Tools\EntityGeneratorComment', 'joinTable' => array( 'name' => 'book_comment', 'joinColumns' => array(array('name' => 'book_id', 'referencedColumnName' => 'id')), 'inverseJoinColumns' => array(array('name' => 'comment_id', 'referencedColumnName' => 'id')), ), )); $builder = new BaseActiveRecord($metadata); eval('?>' . $builder->getCode()); }
static public function setUpBeforeClass() { $metadata = new ClassMetadataInfo('Propel\\Tests\\Builder\\ORM\\Author'); $metadata->setTableName('author'); $metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_AUTO); $metadata->mapField(array('fieldName' => 'id', 'type' => 'integer', 'id' => true)); $metadata->mapField(array('fieldName' => 'firstName', 'type' => 'string', 'nullable' => true)); $metadata->mapField(array('fieldName' => 'lastName', 'type' => 'string', 'nullable' => true)); $metadata->mapField(array('fieldName' => 'comment', 'type' => 'string', 'default' => 'no comment')); $builder = new BaseActiveRecord($metadata); eval('?>' . $builder->getCode()); self::$metadata = $metadata; }
$config = new Configuration(); $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache); $driverImpl = new XmlDriver(__DIR__ . '/fixtures'); $config->setMetadataDriverImpl($driverImpl); $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Proxies'); $config->setClassMetadataFactoryName('Propel\Mapping\DisconnectedClassMetadataFactory'); $connectionOptions = array( 'driver' => 'pdo_sqlite', 'path' => 'database.sqlite' ); $em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config); $cmf = $em->getMetadataFactory(); $generator = new Generator(); foreach ($cmf->getAllMetadata() as $metadata) { $builder = new BaseActiveRecord($metadata); $builder->setMappingDriver(BaseActiveRecord::MAPPING_STATIC_PHP | BaseActiveRecord::MAPPING_ANNOTATION); $builder->setAnnotationPrefix('orm'); $generator->addBuilder($builder); $generator->addBuilder(new ActiveRecord($metadata)); } echo "Generating classes for xml schemas...\n"; $generator->writeClasses(__DIR__ . '/fixtures'); echo "Preparing the SQLite database...\n"; $schemaTool = new SchemaTool($em); $schemaTool->createSchema($cmf->getAllMetadata()); echo "Bootstrap complete\n";
'joinColumns' => array( array('name' => 'author_id', 'referencedColumnName' => 'id') ), )); $metadata->mapManyToMany(array( 'fieldName' => 'comments', 'targetEntity' => 'Doctrine\Tests\ORM\Tools\EntityGeneratorComment', 'joinTable' => array( 'name' => 'book_comment', 'joinColumns' => array(array('name' => 'book_id', 'referencedColumnName' => 'id')), 'inverseJoinColumns' => array(array('name' => 'comment_id', 'referencedColumnName' => 'id')), ), )); $metadata->addLifecycleCallback('loading', 'postLoad'); $metadata->addLifecycleCallback('willBeRemoved', 'preRemove'); $metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_AUTO); $metadata->setChangeTrackingPolicy(ClassMetadataInfo::CHANGETRACKING_DEFERRED_EXPLICIT); $builder = new BaseActiveRecord($metadata); $builder->setMappingDriver(BaseActiveRecord::MAPPING_STATIC_PHP | BaseActiveRecord::MAPPING_ANNOTATION); $builder->setAnnotationPrefix('orm'); // using custom templates to tweak EntityManager $builder->addTemplateDir(__DIR__ . '/templates'); // using extensions $builder->addExtension(new Timestampable()); $builder->addExtension(new GenerationTimestamp()); echo $builder->getCode();