migration基本使用
laravel 特有的對數(shù)據(jù)庫版本的操作密似,解決團(tuán)隊合作數(shù)據(jù)庫結(jié)構(gòu)不統(tǒng)一的問題,智能化管理數(shù)據(jù)庫結(jié)構(gòu)的一種解決方案
創(chuàng)建表
(*表名為復(fù)數(shù)形式廓块,model為單數(shù)形式)
//創(chuàng)建新表
php artisan make:migration create_表名_table --create=users
//--create=users 命令選項(xiàng)表示使用Schema::create方法猜极,參數(shù)為users
//添加表字段
php artisan make:migration add_表名_table --table=users
//--table=users 命令選項(xiàng)表示使用Schema::table方法剔桨,參數(shù)為users
//laravel/database/migrations/
生成的遷移文件的兩個方法
執(zhí)行 php artisan migrate
public function up(){
//創(chuàng)建表
Schema::create('users', function (Blueprint $table) {
$table->string('name', 50)->change();
});
//修改表
Schema::table('question_dati', function (Blueprint $table) {
$table->integer('course_type')->nullable()->after('id');
});
//重命名
Schema::rename(表名,重命名);
}
執(zhí)行 php artisan migrate:rollback
public function down(){
//刪除表
Schema::drop('users');
//刪除字段
Schema::table('question_dati', function (Blueprint $table) {
$table->dropColumn(['course_type', 'z_id' , 'j_id']);
});
}
執(zhí)行 php artisan migrate --pretend 執(zhí)行SQL語句
創(chuàng)建表字段屬性
increments --- 自增長,主鍵,不為負(fù)數(shù),int長度10
string('字段名') --- 字符串
integer('字段名') --- int 類型
decimal('字段名') --- 浮點(diǎn)型
text('字段名') ---text類型
-- nullable() ---為空 (默認(rèn)是不為空not null)
-- default(0) ---默認(rèn)值
-- comment('備注') ---備注
softDeletes() --- 軟刪除
timestamps() ---時間戳Eloquent 自動維護(hù)
unsignedInteger('外鍵ID') --- 表示不為負(fù)數(shù)
指定一個表的外鍵
//表示 本表的外鍵為 user_id,通過 user表的id字段相關(guān)聯(lián)
$table->foreign('user_id')->references('id')->on('users');
常見問題
- 有時候會創(chuàng)建一些錯誤的database/migrations/目錄下文件嘉竟,又不小心刪除了。這時候再執(zhí)行類似命令回報錯,提示找不到文件目錄醉途。
php artisan make:migration create_table_user --create=user
//執(zhí)行 重置composer文件加載項(xiàng):
composer dump-autoload
- 使用laravel 5.4框架數(shù)據(jù)庫遷移時執(zhí)行 php artisan migrate 報錯的問題
//修改 config/database.php 里的 charset,collation,engine 。
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'databasename'),
'username' => env('DB_USERNAME', 'dbuser'),
'password' => env('DB_PASSWORD', 'dbpassword'),
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
'strict' => true,
'engine' => 'MYISAM',
],