コード例 #1
0
ファイル: ModelDescription.php プロジェクト: ntentan/nibii
 /**
  * 
  * @param RecordWrapper $model
  */
 public function __construct($model)
 {
     $this->table = $model->getTable();
     $this->name = Nibii::getModelName((new \ReflectionClass($model))->getName());
     $relationships = $model->getRelationships();
     $adapter = DriverAdapter::getDefaultInstance();
     $schema = Db::getDriver()->describeTable($this->table)[$this->table];
     $this->autoPrimaryKey = $schema['auto_increment'];
     foreach ($schema['columns'] as $field => $details) {
         $this->fields[$field] = ['type' => $adapter->mapDataTypes($details['type']), 'required' => !$details['nulls'], 'default' => $details['default'], 'name' => $field];
         if (isset($details['default'])) {
             $this->fields[$field]['default'] = $details['default'];
         }
         if (isset($details['length'])) {
             $this->fields[$field]['length'] = $details['length'];
         }
     }
     $this->appendConstraints($schema['primary_key'], $this->primaryKey, true);
     $this->appendConstraints($schema['unique_keys'], $this->uniqueKeys);
     foreach ($relationships as $type => $relations) {
         $this->createRelationships($type, $relations);
     }
 }