一条数据记录跟多个数据记录相关联,这个就是数据之间的一对多的关系。比如在我们的应用里,一个用户可以跟多个文章资源相关联 .. 因为一个用户可以是多个文章内容的作者 .. 这种关系可以使用模型的 hasMany 来描述一下 ..
下面可以先去准备一些需要的数据 ..
在数据库客户端这里,查看一下应用的 users 表 ... 你会看到这里已经有了几条用户数据 ...
再查看一下 posts 表 .. 这个表里现在也有几条数据,我们可以先把它们删除掉 .. 选中这几条数据记录 .. 点一下删除 ... 再 Apply .. 应用一下 ...
注意现在这个 posts 表里的字段 .. 现在只有 id ,title,content,created_at 还有 upated_at .. 我们需要在这个表里再添加一个 user_id 字段 .. 里面要存储一下文章的作者是谁 .. 就是用户的 id 号 ..
可以先去创建一个 migration,在这个 posts 表里添加一个 user_id 字段 .. 回到命令行 .. 在项目的下面,执行一下 adonis make:migration 名字是 posts_add_user_id_column .. 选择 select table ..
回到项目 ... 找到刚才创建的 migration ...
先修改一下 up 方法里的东西 .. 数据表是 posts ..
里面再用 table 的 integer 添加一个整数类型的字段,名字是 user_id ... unsigned ,表示都是正数 .. 再用 table.foreign 设置一下外键 .. 这个表里的外键就是 user_id .. references ,它关联的是 users 表里面的 id 字段 ..
然后改造一下 down 方法 ... 数据表是 posts ... 在 rollback 这个 migration 的时候我们先要删除掉外键,然后再删除掉 user_id 这个栏 .. 先用一下 table 的 dropForeign .. 删除掉 user_id 外键 ..
再用一下 table 的 dropColumn ... 删除 user_id 这个栏 ..
回到命令行 ... 执行一下 adonis migration:run ...
Seeder
成功以后再去添加一个 Seeder,往 posts 表里添加点演示数据 .. adonis make:seed Post ..
回到项目 .. 找到刚才创建的 Seeder 文件 ..
我们需要在这里用到 Post 模型 .. 添加一个 Post ... 模型的位置是 App/Models 下面的 Post ..
然后在 run 方法里,可以先添加一组要插入到 posts 表里的数据 .. 添加一个 posts ... 每个项目都是一个对象 .. 里面需要 title 字段,文章的标题 .. content ... 文章的正文 ... 还有 user_id .. 文章的作者的 id 号 ... 这个 id 的值对应的就是 users 表里面的数据记录的 id 号 ..
下面可以使用同样的形式去添加几个文章数据 ...
把这些数据放在 posts 表面保存起来 .. await .. 用一下 Post 模型里的 createMany .. 数据是上面定义的 posts ..
回到命令行 ... 执行一下 adonis seed --files PostSeeder.js
完成以后回到数据库的客户端 ... 浏览一下应用里的 posts 表里面的内容 ... 这里你会发现有我们刚才放进来的数据记录 ..