:::
6. 建立相關資料表及模型
一、建立 Eloquent 模型
-
一個Eloquent 模型對應一張表,model (模型)就是用來操作資料庫資料用的。
-
migration 可視為建立SQL資料表的方法(有點類似xxx.sql的作用),可分次建立,亦可回覆上一動。
- 先建立 Eloquent 模型,以便將一個資料表變成一個物件來操作,並且順便產生 migration 檔案
php artisan make:model Exam --migration -
模型的第一個字請用大寫(大駝峰命名法),單複數不拘,但似乎使用單數的人居多。
-
若 migration 檔案已經存在了,則用下面任一語法均可
php artisan make:model Exam php artisan make:model Exam --no-migration - 最後會產生
/專案/app/Exam.php模型<?php namespace App; use Illuminate\Database\Eloquent\Model; class Exam extends Model { // } -
還有
/專案/database/migrations/日期_create_exams_table.php(如:2018_07_01_161014_create_exams_table.php)<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateExamsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('exams', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('exams'); } }
二、編輯 Eloquent 模型
- 如果是自動建立的 migration,其實下面動作不需要做。
- Eloquent 會假設類別的小寫、底線、複數形式就是資料表的名稱 ,例如類別叫做
Exam,其內定資料表名稱辨識exams,所以資料表名稱若不符合此內規,則可自行定義一個$table屬性來告知正確的資料表名稱。 - Eloquent 也會假設每個資料表有一個主鍵欄位叫做 id。所以,若您的主鍵不是叫做id,那麼你也可以定義一個
$primaryKey屬性來覆寫這個慣例。(/專案/app/Exam.php)<?php namespace App; use Illuminate\Database\Eloquent\Model; class Exam extends Model { //若符合慣例可以不用設定這些 protected $table = 'exams'; protected $primaryKey = 'id'; }
三、Model 慣例
- model 預設在
/專案/app底下,若要放在/專案/app下的子目錄,記得也要修改 namespace - 一個 Model 對應一個資料表
- 資料表名稱為英文 複數 全小寫,單字間用蛇底式命名法( snake case ),例如: first_name 、last_name、snake_case
- Model 名稱為單數,單字間用大駝峰命名法 (upper camel case) ,例如:FirstName、LastName、CamelCase
5-3 安裝 laravel-debugbar 方便除錯
