Current API responds to invalid JSON with:
```json
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=UTF-8
...
{"name":"Bad Request","message":"Invalid JSON data in request body: Syntax error.","code":0,"status":400,"previous":{"name":"Internal Server Error","message":"There was an error at the server.","code":0,"status":500}}
```
While it should be
```json
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=UTF-8
...
{"name":"Bad Request","message":"Invalid JSON data in request body: Syntax error.","code":0,"status":400}
```
When used ActiveQuery chain call after call any of join type IDE cannot resolve ActiveQuery methods such an asArray
Example:
SomeActiveRecordModel::find()
->select('...') // return ActiveQuery
->leftJoin('...', '...') // return Query
->asArray() // it's become undefined
->column();
Declaration of yii\db\Schema is not needed by default. Migration can be related with changing data or renaming column, so user should explicitly add it when it's needed.
- rename class to ColumnSchemaBuilder as this is more appropriate
- changed internal organisation to match how the rest of schema related classes work
- the ColumnSchemaBuilder is now created the same way as QueryBuilder is
- removed static call magic and method annotations, now real methods are called as they are
- the whole code works on objects in a db context now instead of setting database connection in global state
- trait is now used by Migration by default but can be used in other contexts as well
Migration usage is now as follows:
```php
$this->createTable('example_table', [
'id' => $this->primaryKey(),
'name' => $this->string(64)->notNull(),
'type' => $this->integer()->notNull()->defaultValue(10),
'description' => $this->text(),
'rule_name' => $this->string(64),
'data' => $this->text(),
'created_at' => $this->datetime()->notNull(),
'updated_at' => $this->datetime(),
]);
```