数据库迁移
通过命令行进入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();
}