private static function _createDefinition($class, $params)
{
$table = Arrays::getValue($params, 'table') ?: self::defaultTable($class);
$primaryKey = Arrays::getValue($params, 'primaryKey', 'id');
$sequence = Arrays::getValue($params, 'sequence', "{$table}_{$primaryKey}_seq");
list($fields, $defaults) = self::_extractFieldsAndDefaults($params['fields']);
$relations = new Relations($class, $params, $primaryKey);
$db = empty($params['db']) ? Db::getInstance() : $params['db'];
if ($primaryKey && !in_array($primaryKey, $fields)) {
$fields[] = $primaryKey;
}
$afterSaveCallbacks = Arrays::toArray(Arrays::getValue($params, 'afterSave'));
$beforeSaveCallbacks = Arrays::toArray(Arrays::getValue($params, 'beforeSave'));
return new ModelDefinition($db, $table, $sequence, $primaryKey, $fields, $relations, $afterSaveCallbacks, $beforeSaveCallbacks, $defaults);
}