iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0

之前老是被後端說:你要跑migration
migration, migration啥東西,原來是把表單創建起來!

Migration

請搭配這頁Doc服用:Database: Migrations

Laravel的Migration 讓你可以操作你的表單們,像是對資料庫做「版本控制」一樣。

env的配置

實作我使用: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

實作:創建Tables

進入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');
    }
};


來這邊看Available Column Types

跑command: php artisan migrate
或指定檔案php artisan migrate --path=database/migrations/2023_08_26_122528_career_users.php

接著就會在我們DB裡面看到Table了~

index 索引

加入index()方法,可以增加我們查找資料的效率。
其實我還看不太懂,先備用著:
30-13 之資料庫層的優化 - 索引設計與雷區

以上!

明天來看一下當我們想要新增、刪除欄位時,該怎麼做?


上一篇
前端也得懂的Nginx反向代理伺服器-Day04
下一篇
Laravel: DB 新增欄位&刪除表單-Day06
系列文
前輩說Laravel不難,好啊那就1人前後端試試看啊31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言