/** * * @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); } }