Laravel6.X数据库迁移创建表与修改表
数据库迁移创建表
本篇⽂章中使⽤的是mysql数据库,其他数据库需要修改env⽂件和app配置,请其他地⽅搜索⼀下就会到。
创建⽰例
1.创建users表:
命令⾏键⼊
1 php artisan make:migration create_users_table //users复数
或
1 php artisan make:migration create_users_table --create=users//--create及对应的表名 users
执⾏命令后,会在 /database/migrations/ ⽂件夹下⽣成对应的数据库迁移⽂件,通过修改⽂件⾥的up ⽅法和 down⽅法;
当我们运⾏迁移时,up⽅法会被调⽤。
当我们回滚迁移时,down⽅法会被调⽤。
1 public function up()
2 {
3 Schema::create('users', function (Blueprint $table) {
4 $table->bigIncrements('id');
5 $table->string('name')->unique();
6 $table->string('email')->unique();
7 $table->timestamp('email_verified_at')->nullable();
8 $table->string('password');
9 $table->rememberToken();
10 $table->timestamps();
11 });
12 }
2.创建⼀个数据模型的时候需要同时创建对应迁移⽂件可以加上 –m:
1 php artisan make:model Models/Moment -m
就在Models⽂件夹下创建了Moment数据模型 -m在 database/migrations创建了对应的数据库迁移⽂件。【注:类似的还有-f【⼯⼚类】 –
c【控制器】,可以合⽤-cfm,-cm等】
保存后执⾏
1 php artisan migrate
会创建对应up⽅法中配置的字段的数据表。
【上⾯up⽅法中创建⼀个名为users的数据表,表包含id,name,email,email_verified_at,password,rememberToken[注:记住我选项被选中时⽣成],created_at,updated_at字段】
数据库迁移创建表
今后若想修改完善之前的已经创建好的数据表不能再操作之前的数据库迁移⽂件。
修改新增或删除字段需要创建⼀个新的数据库迁移⽂件:
操作前
请检查你的composer.json⽂件中已经添加好了doctrine/dbal依赖,Doctrine DBAL库是⽤来确定数据表中字段当前状态,及⽤于实现⽬标调整的SQL查询语句的创建⼯作的,安装依赖请在控制台中执⾏:
1 composer require doctrine/dbal
安装完成后,接下来:
新增字段
在控制台中执⾏命令:
php artisan make:migration add_要添加的字段名_to_要添加字段的表名_table --table=要添加字段的表名migrate的⽂件名称上⾯那样写只是为了尽量规范⽽已,重要的是迁移⽂件⾥⾯的内容:
为⽰例向users表中添加⼀个post_id字段,所以我们的命令如下:
1 php artisan make:migration add_post_id_to_users_table --table=users
然后会在database/migrations创建了对应的数据库迁移⽂件***_add_post_id_to_users_table.php:
1 public function up()
2 {
3 Schema::table('users', function (Blueprint $table) {
4 $table->bigInteger('post_id')->nullable()->after('email');
5 });
6 }
7
8 public function down()
9 {
10 Schema::table('users', function (Blueprint $table) {
11 $table->dropColumn('post_id');
12 });
13 }
【注意⽅法⾥已经不是Schema::create⽅法的调⽤,⽽是Schema::table⽅法的调⽤了。】
然后,运⾏
1 php artisan migrate
即可⽣效
修改原有字段属性
如果是修改,就调⽤change⽅法即可,⽐如想增加name字段的字符串长度:
1 Schema::table('users', function (Blueprint $table) {
2 $table->string('name', 50)->change();
3 });
⽐如将字段修改为可空:
1 Schema::table('users', function (Blueprint $table) {
2 $table->string('name', 50)->nullable()->change();
3 });
然后,运⾏
1 php artisan migrate
即可⽣效
修改字段名
1 Schema::table('users', function (Blueprint $table) {
2 $table->renameColumn('from', 'to');//from字段改名为to字段
3 });
然后,运⾏
1 php artisan migrate
即可⽣效
删除字段
如果⽬的是删除之前已经存在的表的某些字段,新建数据库迁移⽂件后,在该⽂件的up⽅法中键⼊如下代码;
php修改数据库内容1 Schema::table('users', function (Blueprint $table) {
2 $table->dropColumn('votes');//删除users表的votes字段
3 });
4
5 Schema::table('users', function (Blueprint $table) {
6 $table->dropColumn(['votes', 'avatar', 'location']);//删除users表⾥⾯的votes,avatar,location这三个字段
7 });
然后,运⾏
1 php artisan migrate 即可⽣效
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论