搜尋
首頁php框架LaravelLaravel框架中資料庫與資料庫遷移簡單分析

Laravel框架的開發方式有著敏捷、迭代的特點,並且不指望在第一次就獲得所有正確的程式碼。相反,我們編寫程式碼、測試和與我們的最終用戶進行交互,並完善我們的理解。

對於工作,我們需要一個配套的實踐集。我們使用像subversion、GIT或Mercurial這些版本控制工具來儲存應用程式的原始碼文件,使我們能夠撤消錯誤和追蹤開發過程中的變更。

但應用程式更改時,存在我們不能單獨使用版本控制進行有效管理的區域。在我們的開發進度中,Laravel應用程式的資料庫架構不斷演變:我們在這裡新增了一個表,在那裡重命名列,刪除索引等等。資料庫的變更與應用程式程式碼步調一致。

你需要一個複雜的方法來追蹤您的資料庫架構更改,通常有幾種方法:

  • 當您在開發團隊內工作時,每人都需要知道關於任何架構的變更。

  • 當你在生產伺服器上部署時,您需要有穩健的方式來升級您的資料庫架構。

  • 如果您在多台機器上工作,你需要保持所有資料庫架構的同步。

如果沒有嚴格的約定和紀律讓應用程式開發者遵循,保持資料庫架構與應用程式程式碼同步歷來是一個非常麻煩的工作。開發者(或資料庫管理員) 進行所需的架構變更。但是,如果應用程式程式碼回滾到先前的版本,但是很難撤銷資料庫架構更改,照成資料庫版本資訊與應用程式程式碼版本資訊不一致。

遷移就是幫助你進化你的應用程式資料架構的Laravel方式,它不需要你在每次改變的時候刪除或重建資料庫。沒有刪除和重建就意味著你不會在每次改變的時候丟失資料。當你執行遷移時唯一的改變就是將資料庫架構從一個版本移到另一個版本,不管是向前或向後移。

Laravel遷移給你提供了一種在迭代方式中修改資料庫架構的手段,它不要你用SQL操作,而是允許你使用PHP程式碼。 Laravel架構產生器可讓我們快速建立資料庫表和插入列或索引。它使用清潔和富有表現力的語法來操作資料庫。你也許為認為Laravel遷移就是資料庫的版本控制。

透過定義一個更高層級的介面來建立和維護資料庫架構,你可以用與資料庫無關的方式定義它。透過使用 PHP 來建立表,定義列和索引,寫一次架構並將其應用到任何支援的資料庫後端。額外的好處是 ,Laravel 追蹤已經應用了哪些遷移和哪些仍需要應用。

遷移基礎知識

一個Laravel遷移只是你應用程式app/database/migrations目錄下的PHP原始檔。每個文件都包含了對底層資料庫的一組變更。對資料庫的改變是在PHP程式碼中而不是資料庫特定的SQL。你的PHP遷移程式碼最終會轉換成符合你目前資料庫的DDL,這使得切換資料庫平台非常的容易。由於遷移程式碼保存在自己的目錄中,因此就務必要像其他的專案程式碼一樣包含到版本控制裡面。 Laravel遷移是使用Artisan工具用命令列顯示運行的。

遷移檔案命名約定

在舊版Laravel的,遷移的檔案有比較簡單的名字,如001_create_employees_table.php 。 Laravel 3(Laravel 4.1和其相同)帶來了新的命名約定,其中名稱的第一部分從一個序號變更為更長的時間,像2014_03_11_032903_create_employees_table.php。該檔案的名稱的形式YYYY_MM_DD_HHMMSS_some_meaningful_name.php的,也就是說一個UTC時間戳識別後面跟著一個遷移名。

新的更寬的名字有助於避免名稱衝突,如果你是工作在一個團隊裡的一個開發人員,你可以檢查自己的遷移。

此外, Laravel遷移檔案的時間戳,以便他們可以順序執行。時間戳數字是遷移的關鍵,因為它們定義了哪一個遷移應用在獨立遷移版本號碼的順序。

想SQL腳本,遷移從頂部開始執行,這更需要這些檔案才能執行。順序執行移除了類似這樣的可能性-在表格不存在的時候嘗試插入列。

儘管你可以手動建立遷移文件,但是使用Artisan工具產生遷移腳本更加的容易(且不易出錯)。你可以根據需要在以後編輯這些文件。

執行遷移Forward 和 Backward

使用Artisan工具遷移到資料庫。 Laravel提供了一套artisan任務,可以歸結為運行特定的幾套遷移。

[註]你可以執行artisan list相同查看artisan支援的任務列表,大多數資料遷移相關的任務都帶有前綴migrate:

只有幾個你需要知道的常見任務:

  • migrate:install
    你第一次使用的與遷移有關的artisan任務可能就是migrate:install。在內部,Laravel使用特殊的表來追蹤哪些遷移已經運行。若要建立此表,只需要使用artisan命令列工具:
    $php artisan migrate:install

  • migrate
    你將會執行migrate任務頻繁的更新你的資料庫,以支援你添加到應用程式中的最新的表和列。最基本的形式,它只會對那些所有沒有被運行過的遷移運行up()方法。如果沒有這樣的遷移,會退出。它將基於遷移的日期來運行這些遷移。

  • migrate:rollback
    在寫入遷移時偶爾也會犯錯。如果你已經運行了遷移,那麼你不能只是編輯遷移和再次運行遷移:Laravel假定它已經運行了遷移,那麼當你再次運行artisan migrate,不會做任何事。你必須使用artisan migrate:rollback回滾遷移,然後編輯遷移,再運行artisan migrate去運行正確的版本。

一般情況下,編輯現有的遷移不是好主意:你和你的同事將會需要額外的工作,並且這是一件讓人頭痛的事——如果現存版本的遷移已經運行在生產機器上。相反,你需要寫一個新的遷移去執行所需的改變。

[註]artisan migrate:rollback 會刪除上次的遷移應用程式。 Laravel回去整個遷移「操作」。因此,如果上次的遷移指令運行了15個遷移,這15個遷移都會被回滾。請注意,當你刪除列或表,會遺失資料。

migrate:reset
回滾所有的遷移(會刪除所有表和資料)

migrate:refresh
artisan migrate:refresh任務將刪除資料庫、重新建立它並將載入目前架構。這是一個方便快捷方式去運行重置並隨後重新運行所有遷移。

migrate:make
artisan migrate:make指令告訴 Laravel 來產生一個遷移檔案骨架 (這是實際上是一個 PHP 檔案) ,存放到app/database/migrations資料夾中。然後,您可以編輯此文件來充實您的表/索引定義。然後,artisan migrate指令執行時,artisan會查詢此檔案來生成 SQL DDL 的實際程式碼。

相關推薦:

laravel5如何透過freetds來連接到sqlserver(程式碼)

#

以上是Laravel框架中資料庫與資料庫遷移簡單分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Laravel的主要功能:後端開發Laravel的主要功能:後端開發Apr 15, 2025 am 12:14 AM

Laravel在後端開發中的核心功能包括路由系統、EloquentORM、遷移功能、緩存系統和隊列系統。 1.路由系統簡化了URL映射,提高了代碼組織和維護性。 2.EloquentORM提供了面向對象的數據操作,提升了開發效率。 3.遷移功能通過版本控制管理數據庫結構,確保一致性。 4.緩存系統減少數據庫查詢,提升響應速度。 5.隊列系統有效處理大規模數據,避免阻塞用戶請求,提升整體性能。

Laravel的後端功能:數據庫,邏輯等等Laravel的後端功能:數據庫,邏輯等等Apr 14, 2025 am 12:04 AM

Laravel在後端開發中表現強大,通過EloquentORM簡化數據庫操作,控制器和服務類處理業務邏輯,並提供隊列、事件等功能。 1)EloquentORM通過模型映射數據庫表,簡化查詢。 2)業務邏輯在控制器和服務類中處理,提高模塊化和可維護性。 3)其他功能如隊列系統幫助處理複雜需求。

Laravel的多功能性:從簡單站點到復雜系統Laravel的多功能性:從簡單站點到復雜系統Apr 13, 2025 am 12:13 AM

選擇Laravel開發項目是因為其靈活性和強大功能適應不同規模和復雜度的需求。 Laravel提供路由系統、EloquentORM、Artisan命令行等功能,支持從簡單博客到復雜企業級系統的開發。

Laravel(PHP)與Python:開發環境和生態系統Laravel(PHP)與Python:開發環境和生態系統Apr 12, 2025 am 12:10 AM

Laravel和Python在開發環境和生態系統上的對比如下:1.Laravel的開發環境簡單,僅需PHP和Composer,提供了豐富的擴展包如LaravelForge,但擴展包維護可能不及時。 2.Python的開發環境也簡單,僅需Python和pip,生態系統龐大,涵蓋多個領域,但版本和依賴管理可能複雜。

Laravel和後端:為Web應用程序提供動力邏輯Laravel和後端:為Web應用程序提供動力邏輯Apr 11, 2025 am 11:29 AM

Laravel是如何在後端邏輯中發揮作用的?它通過路由系統、EloquentORM、認證與授權、事件與監聽器以及性能優化來簡化和增強後端開發。 1.路由系統允許定義URL結構和請求處理邏輯。 2.EloquentORM簡化數據庫交互。 3.認證與授權系統便於用戶管理。 4.事件與監聽器實現松耦合代碼結構。 5.性能優化通過緩存和隊列提高應用效率。

為什麼Laravel如此受歡迎?為什麼Laravel如此受歡迎?Apr 02, 2025 pm 02:16 PM

Laravel受歡迎的原因包括其簡化開發過程、提供愉快的開發環境和豐富的功能。 1)它吸收了RubyonRails的設計理念,結合PHP的靈活性。 2)提供瞭如EloquentORM、Blade模板引擎等工具,提高開發效率。 3)其MVC架構和依賴注入機制使代碼更加模塊化和可測試。 4)提供了強大的調試工具和性能優化方法,如緩存系統和最佳實踐。

django或laravel哪個更好?django或laravel哪個更好?Mar 28, 2025 am 10:41 AM

Django和Laravel都是全棧框架,Django適合Python開發者和復雜業務邏輯,Laravel適合PHP開發者和優雅語法。 1.Django基於Python,遵循“電池齊全”哲學,適合快速開發和高並發。 2.Laravel基於PHP,強調開發者體驗,適合小型到中型項目。

哪個是更好的PHP或Laravel?哪個是更好的PHP或Laravel?Mar 27, 2025 pm 05:31 PM

PHP和Laravel不是直接可比的,因為Laravel是基於PHP的框架。 1.PHP適合小型項目或快速原型開發,因其簡單直接。 2.Laravel適合大型項目或高效開發,因其提供豐富功能和工具,但學習曲線較陡,性能可能不如純PHP。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中