[Laravel] 連線資料庫、建立Model & migration #4


step 1. 首先記得打開 mySQL



step 2. 先修改 .env 檔


資料庫的三個參數
DB_DATABASE=資料庫名稱
DB_USERNAME=使用者名稱
DB_PASSWORD=密碼
***.env檔裡面有放資料庫的密碼,所以記得不要git上去哦!



step 3. 修改時區 config\app.php

找到timezone
'timezone' => 'UTC',
將UTC改成 Asia/Taipei
'timezone' => 'Asia/Taipei',


step 4. 建立Model & migration

> php artisan make:model Entities/Record -m

-m : 建立model,同時建立資料表的migration

執行完這行會產生兩個檔案,分別為:
  • app\Entities:Record.php
  • database\migrations:2018_07_14_191743_create_records_table.php

- Model 第一個字母大寫,以大駝峰命名
- Table 全部小寫加上s
- Migration 資料庫遷移檔,時間戳 + tablename



step 5. 開啟 migration檔


在up()裡面新增欄位,可以參考官方網站的寫法。
public function up()
    {
        Schema::create('records', function (Blueprint $table) {
            $table->increments('id');
            // 增加欄位在這
            $table->timestamps();
        });
    }
這裡也支援外來鍵(FK)哦!
不過前提是要先有參照的Table要先蓋好!
這樣才不會錯~~~~
.....



step 6. 建構資料表


第一次建構時:
> php artisan migrate

若有打錯要重新建構可使用:
> php artisan migrate:refresh




step 7. 如果報錯



SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

我們要修改 → app\Providers\AppServiceProvider.php
增加兩行code

<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema; //1.新增

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191); //2.新增
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

然後再使用

> php artisan migrate:refresh




step 8. 完成


可以去資料庫看是否建好Table了哦!!!

留言