一、配置数据库
adonis支持 PostgreSQL,SQLite,MySQL,MariaDB,Oracle,MSSQL 数据库,默认为SQLite。在 config/database 中修改配置。
connection: Env.get('DB_CONNECTION', 'mysql'),
二、创建数据库模型(Model)
λ adonis make:model profile
√ create app\Models\Profile.js
大多数情况下我们无需修改模型文件。
三、创建迁移(migration)
数据库迁移是一种从代码创建,更改和删除数据库表而不是编写SQL查询的过程。
λ adonis make:migration profile
> Choose an action Create table
√ create database\migrations\1532938278888_profile_schema.js
选择Create table。
创建好了之后,在文件中定义表格的格式。
'use strict'
const Schema = use('Schema')
class ProfileSchema extends Schema {
up () {//创建时执行内容
this.create('profiles', (table) => {
table.increments() // id字段
//这里是手动添加的---------
table.string('userNick')
table.string('introduction')
table.integer('age')
//---------------------------------
table.timestamps()
})
}
down () {//回滚时执行内容
this.drop('profiles')
}
}
module.exports = ProfileSchema
创建好了之后执行
adonis migration:status
可以看到所有迁移的执行情况
┌──────────────────────────────┬──────────┬───────┐
│ File name │ Migrated │ Batch │
├──────────────────────────────┼──────────┼───────┤
│ 1503248427885_user │ No │ │
├──────────────────────────────┼──────────┼───────┤
│ 1503248427886_token │ No │ │
├──────────────────────────────┼──────────┼───────┤
│ 1532938278888_profile_schema │ No │ │
└──────────────────────────────┴──────────┴───────┘
可以看到所有迁移都还没有执行,数据库中也没有一个表。
四、执行迁移,创建表格
输入:
adonis migration:run
输出:
migrate: 1503248427885_user.js
migrate: 1503248427886_token.js
migrate: 1532938278888_profile_schema.js
Database migrated successfully in 509 ms
这时候再运行adonis migration:status
就能看到所有迁移都在运行中。
五、填充数据
这里我们给user表格填充数据。
创建一个seeder:
λ adonis make:seed user
√ create database\seeds\UserSeeder.js
进入文件,添加要插入的数据,然后使用crateMany
进行插入。
'use strict'
const Factory = use('Factory')
const user = use('App/Models/User')
class UserSeeder {
async run () {
const users = [
{username: '赫鲁晓夫',email:'hlxf@sl.com',password:'maize'},
{username: '勃列日涅夫',email:'blrnf@sl.com',password:'medal'}
]
await user.createMany(users)
}
}
module.exports = UserInfoSeeder
之后再在命令行运行
λ adonis seed --files UserSeeder.js
Seeded database in 67 ms
如果不加 --files UserSeeder.js
那么将执行seeds目录下的所有*Seeder.js
文件。