美文网首页
Laravel框架进行数据库迁移和数据注入

Laravel框架进行数据库迁移和数据注入

作者: 夏天与你䒑江河不渡 | 来源:发表于2018-07-07 16:24 被阅读0次

数据库迁移

通过命令行进入Laravel所在的文件夹,使用下列命令创建并进行数据库的迁移操作

php artisan make:migration test<test为希望创建的文件名>
通过该命令创建的文件,存在于database/migrations目录中

虽然可以直接使用下列代码进行更新操作,但是使用这种方式,会清空数据库表中原有的数据
public function up()
  {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title')->comment('文章标题');
            $table->text('content')->comment('文章内容');
            $table->timestamps();
        });
  }

public function down()
{
        Schema::dropIfExists('posts');
}
推荐通过设置条件,进行表结构的更新,通过 if 与 else 组合使用,使数据库迁移操作不会清空数据库表信息
public function up()
    {
    //如果当前表不存在,则世界使用create创建
    if(!Schema::hasTable('test')) { //检测test表是否存在
        Schema::create('test', function(Blueprint $table) {
            $table->increments('id')->comment('主键');
            $table->string('username')->nullable();
            $table->char('password', 100)->comment('密码');
        });
    } else {
        Schema::table('test', function($table) {
            //使用这种方式,不会删除测试数据
            if(!Schema::hasColumn('test', 'sex')){  //判断是否存在这个字段
                $table->string('email');
            }
        });
    }
}

public function down()
{
    Schema::dropIfExists('test');
}

数据注入

在框架的使用过程中,我们需要在数据库表中填充一些测试数据,在Laravel中,提供了便捷的数据注入方式

在命令行中键入:php artisan make:seeder user<user为创建文件名>
文件默认在database/seed目录中

public function run()
{
    $arr = [];
    for($i = 0; $i < 20; $i++) {
        $tmp = [];
        $tmp['title'] = str_random(20);
        $tmp['content'] = str_random(100);
        $tmp['created_at'] = date('Y-m-d H:i:s');
        $tmp['updated_at'] = date('Y-m-d H:i:s');;
        //将数据压入arr数组
        $arr[] = $tmp;
    }
    DB::table('posts')->insert($arr);
}

数据库注入的执行有两种方式

一、直接执行

在代码编写完成后,直接执行命令,进行数据库注入

php artisan db:seed --class=user

二、将数据注册进DatabaseSeeder文件

在同级文件中,有一个文件为DatabaseSeeder.php,通过在其中注册,可以直接使用下列命令

php artisan db:seed

注册方式为

public function run()
{
    Model::unguard();
    //通过更改这条命令,进行注册
    $this->call(postSeeder::class);
    Model::reguard();
    
}

相关文章

网友评论

      本文标题:Laravel框架进行数据库迁移和数据注入

      本文链接:https://www.haomeiwen.com/subject/aezwuftx.html