引言
沒有模型的框架是沒有靈活的!每個框架都會針對資料庫進行深度設計,
以便快捷地進行SQL的增刪改查,把重複的勞動抽象出來,提高應用開發效率。
本期就來講講laravel的模型初階用法。
程式碼時間
模型是在程式碼中抽象一層,把資料庫操作提取出來。laravel支援常用的資料庫產品,
我們以MySQL為例。首先在配置檔案內,配置引數對資料庫連線。
在配置檔案 config/database.php 內,預設的配置如下:
包括資料庫連線名,資料庫地址,埠,使用者名稱和密碼,資料庫名等等資訊,就完成了初始化配置。
一般,如果不手動指定,laravel模型內的 $connection
就是取的配置檔案內的這一行:
'default' => env('DB_CONNECTION', 'mysql'),
也即是mysql資料庫。接著我們通過遷移功能,建立一個遷移檔案。這樣無需我們手動建立資料庫表。
在命令列執行以下指令:
php artisan make:model Event --migration
命令列輸出如下:
Model created successfully.
Created Migration: 2020_09_27_202416_create_events_table
可以看到系統建立了一個模型檔案在 app/Event.php
。其中內容視不同的laravel版本而有所不同,但是基礎內容未變:
有了模型對應資料庫表,現在我們還缺一個資料庫表,在遷移檔案內進行配置。
由於我們在上述命令列腳手架中使用了 –migration 選項,系統就建立了遷移檔案,
編輯 2020_09_27_202416_create_events_table.php
內容。自帶的內容如下:
其中 up 方法 Schema 用於建立資料庫欄位,索引等等,其中 down 方法,用於回滾遷移。
在生命中,預設給了兩個欄位:
- 自增的id欄位
- timestamps() 方法會建立 created_at 和 updated_at 兩個 datetime 欄位
我們為資料庫表再增加一些欄位:
其中 string 方法建立的是 VARCHAR 型別的欄位,text 方法建立 TEXT 型別的欄位。
nullable 方法表名該欄位預設允許為 NULL。
完成表單的欄位設計後,我們將設計的表應用到資料庫。在命令列執行以下指令:
php artisan migrate
命令列輸出大致如下:
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrating: 2020_09_27_202416_create_events_table
Migrated: 2020_09_27_202416_create_events_table
其中 users
表,password_resets
表,是系統自帶的許可權系統使用的。
為了驗證是否遷移成功,我們在命令列使用mysql客戶端連線目標資料庫。
首先展示所有的表名:
重點看一下我們設計的 events
表的結構,是否如 Schema 的期望:
如果我們需要重新設計表結構,對上面的遷移進行回滾也很簡單,執行以下命令:
php artisan migrate:rollback
輸出內容如下:
Rolling back: 2020_09_27_202416_create_events_table
Rolled back: 2020_09_27_202416_create_events_table
Rolling back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_100000_create_password_resets_table
Rolling back: 2014_10_12_000000_create_users_table
Rolled back: 2014_10_12_000000_create_users_table
這可不妙,我們只想回滾 events
表,不想回滾 user
password_resets
表。
那麼我們需要手動指定,回滾的時候,僅回滾最新一批次的遷移。執行以下程式碼:
php artisan migrate:rollback --step=1
輸出如下:
Rolling back: 2020_09_27_202416_create_events_table
Rolled back: 2020_09_27_202416_create_events_table
注意是按照批次回滾的,如果回滾到第二批次,第三批次,只用指定 –step=N 即可。
寫在最後
本文講解了laravel在連線資料庫,建立資料庫表遷移檔案的內容。對於強大的Eloquent ORM 這只是一個開始。
Happy coding :-)
我是@程式設計師小助手,專注程式設計知識,圈子動態的IT領域原創作者
本作品採用《CC 協議》,轉載必須註明作者和本文連結