但是用了好幾個好處,你可以快速的重建你的db,恢復,以及初始化資料表內容更彈性。
我用的到的也不多,就以下這幾句
php artisan migrate:make create_users_table//建立一支migrate檔
php artisan migrate//執行資料夾裡所有的migrate檔(建立
php artisan migrate:reset//執行資料夾裡所有的migrate檔(清除
php artisan db:seed//餵資料表資料
範例:以產生一個表的資料來說~
php artisan migrate:make create_users_table
會產生一支檔案 如:2014_12_17_213725_create_users_table.php
在/app/database/migrations/底下
裡面會有up跟down 2個function,
up是執行php artisan migrate時用的,down 是php artisan migrate:reset時用的
up裡寫上建表的script
// Creates the users table
Schema::create('users', function($table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('username');
$table->string('email');
$table->string('password');
$table->string('confirmation_code');
$table->string('remember_token')->nullable();
$table->boolean('confirmed')->default(false);
$table->timestamps();
});
down裡寫上清除的script
Schema::drop('users');
接著執行 php artisan migrate就會建立新表了,執行php artisan migrate:reset又會清掉這張表
在/app/database/seeds/底下 有一支DatabaseSeeder.php
在裡面寫上要呼叫seed的檔案 如
Eloquent::unguard();
// Add calls to Seeders here
$this->call('UsersTableSeeder');
這支UsersTableSeeder放在同一層
class UsersTableSeeder extends Seeder {
public function run()
{
DB::table('users')->truncate();
//DB::table('users')->delete();
$users = array(
array(
'username' => 'admin',
'email' => 'admin@test.org',
'password' => Hash::make('admin'),
'confirmed' => 1,
'confirmation_code' => md5(microtime().Config::get('app.key')),
'created_at' => new DateTime,
'updated_at' => new DateTime,
)
);
DB::table('users')->insert( $users );
}
}
接著執行php artisan db:seed 就會餵資料進去了
使用DB::table('users')->truncate();會使auto_increment的值清空DB::table('users')->delete();則不會。
//以下是unique跟foreign的用法
$table->unique(array('ad_id','ad_groups_id'));//將這2個鍵共設為unique
$table->foreign('ad_id')->references('id')->on('ads')->onDelete('cascade');//將本表的ad_id參考到ads表的id,當delete的時候。
參考資料來源
http://laravel.com/docs/4.2/migrations