之前老是被後端說:你要跑migration
migration, migration啥東西,原來是把表單創建起來!
請搭配這頁Doc服用:Database: Migrations
Laravel的Migration 讓你可以操作你的表單們,像是對資料庫做「版本控制」一樣。
實作我使用:mysql
來到我們專案找到.env
檔案,發現.env已經被很貼心的填入了一些資料
把 DB_HOST=127.0.0.1
改成mysql,
Database改成你想要的名字,Username & password也隨你囉
DB_CONNECTION=mysql
#DB_HOST=127.0.0.1
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=career_expo
DB_USERNAME=root
DB_PASSWORD=root
進入docker workspace 跑指令 artisan make:migration career_users
//記得是在laradock repo 啟用(別忘了docker 要打開喔)
laradock % docker-compose exec --user=laradock workspace bash
//看到/var/www表示進入虛擬容器,cd到我們的資料夾
laradock@c8f18727778c:/var/www$ cd rachel-projects/career-expo/
laradock@c8f18727778c:/var/www/rachel-projects/career-expo$ artisan make:migration career_users
可以看到 databse>migrations>
裡面多了一張:2023_08_26_122528_career_users.php
日期的戳記就可以幫我們做紀錄,哪天做了哪張表格。
這一張就是我們Table的藍圖,而Up function裡面可以寫我們所需的欄位,
讓我把我需要的欄位放在下面看看:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('career_users', function (Blueprint $table) {
//id欄位,會自動從1開始排序的primary key,相當於$table->bigIncrements('id');
$table->id();
//建立出created_at & updated_at欄位
$table->timestamps();
$table->string('name_id')->unique()->index('state');
$table->string('name_show')->nullable();
$table->string('image')->nullable();
$table->string('occupation')->nullable();
$table->string('nationality')->nullable();
$table->string('work_country')->nullable();
$table->string('keywords')->nullable();
$table->string('quote')->nullable();
$table->string('parent_category')->nullable();
$table->string('category')->nullable();
$table->string('email')->unique()->nullable();
$table->boolean('email_share')->nullable();
$table->string('social_media')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('career_users');
}
};
跑command: php artisan migrate
或指定檔案php artisan migrate --path=database/migrations/2023_08_26_122528_career_users.php
接著就會在我們DB裡面看到Table了~
加入index()
方法,可以增加我們查找資料的效率。
其實我還看不太懂,先備用著:
30-13 之資料庫層的優化 - 索引設計與雷區
明天來看一下當我們想要新增、刪除欄位時,該怎麼做?