public function testGetDatabaseTable()
 {
     $field1 = new PropertyField('field1', 'type');
     $field2 = new PropertyField('field2', 'type');
     $field3 = new HasManyField('field3', 'model');
     $index = new Index('field2', array($field2));
     $modelTable = new ModelTable('table');
     $modelTable->addField($field1);
     $modelTable->addField($field2);
     $modelTable->addField($field3);
     $modelTable->addIndex($index);
     $pk = new PropertyField('id', 'pk');
     $pk->setIsAutonumbering(true);
     $pk->setIsPrimaryKey(true);
     $databaseTable = new Table('table');
     $databaseTable->addField($pk);
     $databaseTable->addField($field1);
     $databaseTable->addField($field2);
     $databaseTable->addIndex($index);
     $this->assertEquals($databaseTable, $modelTable->getDatabaseTable());
 }
Beispiel #2
0
 public function testHasIndex()
 {
     $table = new Table('table');
     $field = new Field('field', 'type');
     $index = new Index('index', array($field));
     $table->addField($field);
     $table->addIndex($index);
     $this->assertTrue($table->hasIndex('index'));
     $this->assertFalse($table->hasIndex('unexistant'));
 }
Beispiel #3
0
 /**
  * Get the database table definition of this model
  * @return zibo\library\database\definition\Table
  */
 public function getDatabaseTable()
 {
     $table = new Table($this->name);
     foreach ($this->fields as $fieldName => $field) {
         if ($field->isLocalized() || $field instanceof HasManyField || $field instanceof HasOneField) {
             continue;
         }
         $table->addField($field);
         if ($field instanceof BelongsToField) {
             $name = $this->name . '_' . ucfirst($fieldName);
             if (strlen($name) > 64) {
                 $name = '_' . ucfirst($fieldName);
                 $name = substr($this->name, 0, 64 - strlen($name)) . $name;
             }
             $foreignKey = new ForeignKey($fieldName, $field->getRelationModelName(), self::PRIMARY_KEY, $name);
             $table->setForeignKey($foreignKey);
         }
     }
     foreach ($this->indexes as $index) {
         $fields = $index->getFields();
         foreach ($fields as $field) {
             if ($field->isLocalized()) {
                 continue 2;
             }
         }
         $table->addIndex($index);
     }
     return $table;
 }