企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
在 项目目录下有database文件夹,database/migrations有laravel为我们提供的迁移文件 使用 Artisan 命令make:migration来创建一个新的迁移 ~~~ php artisan make:migration create_table_questions --create=questions ~~~ 新的迁移位于database/migrations目录下,每个迁移文件名都包含时间戳从而允许 Laravel 判断其顺序,然后我们把laravel提供的迁移文件删除.如果不删除会生成其他的表 打开对应的迁移文件,里面可以看到有up和down方法 在up方法中我们创建一个表名为table1,并添加些字段 up方法写好了,现在用artisan来创建对应的表 ~~~ php artisan migrate ~~~ 可以看到有migrations和table_1这2张表,migrations这张表是记录迁移的 在down方法里面可以写对应代码删除表 ~~~ public function down() { //参数是存在的表名 Schema::drop('table_1'); } ~~~ 然后在控制台里运行回滚迁移,删除这张表 ~~~ php artisan migrate:rollback ~~~ 对应的数据库里面可以看到已经删除这张表 在对应的命令后面加 --pretend 比如 ~~~ php artisan migrate --pretend ~~~ 可以看到这条命令将要执行什么,实际上他还没执行 执行`php artisan migrate:refresh`这个命令我们数据库之前的东西会全部没了 我们用数据迁移创建迁移文件php artisan make:migration create_table_articles --create=articles 编辑它 ~~~ public function up() { Schema::create('articles', function (Blueprint $table) { $table->increments('id'); // $table->integer('user_id')->unsigned(); $table->string('title'); $table->text('content'); $table->timestamp('published_at'); $table->timestamps(); // $table->foreign('user_id')->references('id')->on('users'); }); } ~~~ 我们发现有些字段如果我们当初没有写的话,怎么添加进去呢? 创建迁移文件`php artisan make:migration add_user_id_column_to_articles --table=articles` 编辑它 ~~~ Schema::table('articles', function (Blueprint $table) { $table->integer('user_id')->default(1); }); ~~~ 再运行`php artisan migrate`表就建好了,同时user_id字段也添加进去了 在User.php这个模型类中编辑 ~~~ //一个用户有多篇文章 //首先articles这个名字不是固定,可以随便起 public function articles() { //我们可以使用$user->articles这个方法,可以取到所有属于他的文章 //如果articles这张表中外键不是使用user_id,你需要告诉laravel,比如使用user //return $this->hasMany('App\Article','user'); return $this->hasMany('App\Article'); } ~~~ 查看迁移的状态 ~~~ php artisan migrate:status ~~~