3分鐘短文:素未謀面,Laravel資料庫模型初階入門

ragus發表於2020-09-28

引言

沒有模型的框架是沒有靈活的!每個框架都會針對資料庫進行深度設計,

以便快捷地進行SQL的增刪改查,把重複的勞動抽象出來,提高應用開發效率。

圖片

本期就來講講laravel的模型初階用法。

程式碼時間

模型是在程式碼中抽象一層,把資料庫操作提取出來。laravel支援常用的資料庫產品,

我們以MySQL為例。首先在配置檔案內,配置引數對資料庫連線。

在配置檔案 config/database.php 內,預設的配置如下:

pic

包括資料庫連線名,資料庫地址,埠,使用者名稱和密碼,資料庫名等等資訊,就完成了初始化配置。

一般,如果不手動指定,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版本而有所不同,但是基礎內容未變:

pic

有了模型對應資料庫表,現在我們還缺一個資料庫表,在遷移檔案內進行配置。

由於我們在上述命令列腳手架中使用了 –migration 選項,系統就建立了遷移檔案,

編輯 2020_09_27_202416_create_events_table.php 內容。自帶的內容如下:

pic

其中 up 方法 Schema 用於建立資料庫欄位,索引等等,其中 down 方法,用於回滾遷移。

在生命中,預設給了兩個欄位:

  • 自增的id欄位
  • timestamps() 方法會建立 created_atupdated_at 兩個 datetime 欄位

我們為資料庫表再增加一些欄位:

pic

其中 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客戶端連線目標資料庫。

首先展示所有的表名:

pic

重點看一下我們設計的 events 表的結構,是否如 Schema 的期望:

pic

如果我們需要重新設計表結構,對上面的遷移進行回滾也很簡單,執行以下命令:

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 協議》,轉載必須註明作者和本文連結
write-less-do-more-make-you-out-of-door

相關文章