有关 “迁移” 的原理:什么是迁移?
读了这一节,对什么是迁移还是不太明白。
看字面意思,好像是把数据库里的内容“迁移”到database/migrations里备份一下,而database/migrations/2014_10_12_000000_create_users_table.php和database/migrations/2014_10_12_100000_create_password_resets_table.php这2个文件就是备份文件,包含着数据库里2个表格的内容,这样理解正确吗?
如果是这样,那有点奇怪,因为后面说:
- 当我们运行迁移时,
up方法会被调用; - 当我们回滚迁移时,
down方法会被调用。
up和down这俩方法本身是迁移后生成的文件(database/migrations/2014_10_12_000000_create_users_table.php和database/migrations/2014_10_12_100000_create_password_resets_table.php)里的方法,也就是说,我们用这2个文件内部的方法生成了这2个文件本身,这个不太合理吧。
或者,上述2个文件不是备份文件,而是实现备份的手段?如果是这样,那么生成的备份文件储存在哪里呢?
请问我哪里理解有误?
谢谢!
关于 LearnKu
数据库迁移《Laravel 5.8 中文文档》
你花时间写的问题都可以把这个看完了。
你先看简介,它已经有说明了。
@likunyan
我看了一遍,目前的理解是,所谓“迁移”其实压根就不是迁移,不是把某个已存在的东西从某处移动到另一处。
其实就是“创建”而已,是从无到有的过程,调用
up方法在数据库里创建一个表格。up方法其实就是一个预定义的数据库query。以后每次要增删,直接运行这个query即可,不用每次都手动输入了。这样理解是否正确?
laravel框架把数据库表中的各种操作写成了migrations迁移文件, 然后可以直接通过迁移文件来操作表. 所以 , 数据迁移文件就是 操作表的语句文件 操作表的语句文件 为什么用迁移文件 , 而不直接敲 sql 操作表 ?
“迁移”在中文里较多是用作“动词”,而英文原文 migrations 主要是名词,所以直译过来时容易让人转不过弯。可能叫 “迁移器” 更容易让人理解。它的主要作用是把用 PHP代码 定义的结构迁移到数据库中去。达成迁移是它的主要使命。
up 是移过去(或装上去)
down 是移回来(或拆下来)
其实很多术语的翻译有这个情况,什么时候你觉得读起来别扭,不如在翻译过来的中文术语后面加个“器”或者“化”字试试。因为大都是动词当名词用,原来的名词当动词用。