摘要:它分為這么幾個部分,這是下的標準執行命令,沒什么好說的。,前面這是里執行的標準命令,后面是說明我們要創建一個新的文件。,引號里的內容詳細說明了我們要創建的這張數據庫表中的字段名稱及類型等。
認識總是在不斷進步的,其實事情遠遠沒有這么復雜,我們只需要安裝一個插件就夠了:
composer require -dev --prefer-dist insolita/yii2-migration-generator:~2.3
然后你只需要訪問Yii的gii頁面,就可以從原有的數據庫里自動導出migrate文件了。不過以下方法依然有用,就是在你創建一個新的數據庫表的時候。
關于Yii2的migrate使用的文章網上已有不少,但很多已經舊了,大量的還是教你如何編寫代碼,但實際上最新版Yii2的migrate可以盡量減少編寫代碼的工作,至少可以減少編寫php代碼而只通過命令行的方式就能達到目的。
我們直接分析以下命令行:
./yii migrate/create create_fac_item_table --fields="idfac_item:primaryKey,item_name:string(12):notNull,fac_id:integer:notNull:foreignKey(facility idfacility)"
雖然看上去很長,但是想清楚了寫出來還是不難的。它分為這么幾個部分:
./yii,這是linux下的標準執行命令,沒什么好說的。
migrate/create,前面migrate這是Yii2里執行migrate的標準命令,后面create是說明我們要創建一個新的migrate文件。
create_fac_item_table,這里create_xxx_table是一個標準格式,就是說我們要創建的這個migrate文件要完成的任務是創建名稱為xxx的數據庫表,我這里要創建的表的名稱是fac_item,所以是這種格式。
--fields="",引號里的內容詳細說明了我們要創建的這張數據庫表中的字段名稱及類型等。下面詳細說明:
idfac_item:primaryKey,這個地方的意思是說這個表的主鍵名稱為idfac_item
item_name:string(12):notNull,這是第2個字段,它是一個string類型,長度為12,不允許為空
fac_id:integer:notNull:foreignKey(facility idfacility),這是第3個字段,它是一個數字型,非空,并且還有一個外鍵,連接到一個名稱為facility的數據庫表,連接的主鍵名稱為idfacility,中間以空格區格。
全部寫好之后回車,它會問你是否要執行,如下:
Yii Migration Tool (based on Yii v2.0.12-dev) Create new migration "/Library/WebServer/Documents/project/console/migrations/m170602_002220_create_fac_item_table.php"? (yes|no) [no]:yes New migration created successfully.
它會自動在console/migrations下生成一個新的.php文件,如下:
createTable("fac_item", [ "idfac_item" => $this->primaryKey(), "item_name" => $this->string(12)->notNull(), "fac_id" => $this->integer()->notNull(), ]); // creates index for column `fac_id` $this->createIndex( "idx-fac_item-fac_id", "fac_item", "fac_id" ); // add foreign key for table `facility` $this->addForeignKey( "fk-fac_item-fac_id", "fac_item", "fac_id", "facility", "idfacility", "CASCADE" ); } public function down() { // drops foreign key for table `facility` $this->dropForeignKey( "fk-fac_item-fac_id", "fac_item" ); // drops index for column `fac_id` $this->dropIndex( "idx-fac_item-fac_id", "fac_item" ); $this->dropTable("fac_item"); } }
up和down的作用就不詳細解釋了,官方文檔有詳細解釋,大意是說up是向上執行,down讓你有個后悔的余地。
缺省情況下,你的console/migrations目錄下應該還有另外一個關于user表的創建文件,所以如果你現在就執行./yii migrate的話,它會問你是否要執行所有的操作:
Yii Migration Tool (based on Yii v2.0.12-dev) Total 2 new migrations to be applied: m130524_201442_init m170602_002220_create_fac_item_table Apply the above migrations? (yes|no) [no]:no
在這里,我們選擇no,因為我們數據庫里已經有user這張表了,不需要再創建一遍,我們需要標記一下,省得它以后老問我們這個問題:
./yii migrate/mark m130524_201442_init
然后再執行./yii migrate
Yii Migration Tool (based on Yii v2.0.12-dev) Total 1 new migrations to be applied: m170602_002220_create_fac_item_table Apply the above migrations? (yes|no) [no]:yes *** applying m170602_002220_create_fac_item_table > create table fac_item ... done (time: 0.555s) > create index idx-fac_item-fac_id on fac_item (fac_id) ... done (time: 0.649s) > add foreign key fk-fac_item-fac_id: fac_item (fac_id) references facility (idfacility) ... done (time: 0.529s) *** applied m170602_002220_create_fac_item_table (time: 1.986s) 1 migration were applied. Migrated up successfully.
用mysql workbench檢查數據庫,發現表已成功建立:
外鍵也是正確的:
我這里舉的例子只是創建數據庫表,其它比如刪除數據庫表,添加字段,刪除字段等工作都可以用這種命令行的方式完成,具體就不細講了,大家可以去參考Yii2的官方文檔。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23069.html
摘要:高性能始終是的首要目標之一。版是上代的老版本,現在處于維護狀態。版是一個完全重寫的版本,采用了最新的技術和協議,包括依賴包管理器代碼規范命名空間特質等等。所以,我們學習版本。啟用本鏡像服務系統全局配置即將配置信息添加到的全局配置文件中。 工作中需要用到YII框架,于是乎,系統的學習下這套框架,詳細教程請看考該站完整系列:YII2教程 一、YII簡介 1、什么是YII Yii 是一個高性...
摘要:原文來自這一篇文章的開頭就無需多言了,緊接著上一篇的內容和計劃,這一篇我們來說說的和。,那既然這樣,我們就來實現一下唄。所以我們首先需要將表中的幾條數據刪掉。下一節再詳細講講吧,這一節寫下來貌似要說的實在有點多。 原文來自:https://jellybool.com/post/programming-with-yii2-behaviors-and-validat... 這一篇...
摘要:于是直接暴力開干,找說明書查詢。測試登錄,果然不通。一般情況下,這時候應該遵照官方手冊,開始建立自己相配套的數據庫體系。數據庫是連通了,出現了熟悉的錯誤找不到表。登入登出完全正常,終于可以和和和美美地住在一個小房子里了。 Yii2與Laravel相愛相殺已經很久了,導致廣大PHP愛好者必須選邊站隊,生怕自己站錯了陣營。作為一個已經上了Yii2賊船很久的人想換船是需要很大勇氣的,能不能就...
摘要:根據修改,只是方式,這個相當于的版本。適合用于前后端分離項目,方式提供接口,實現對接口的權限控制。 根據yii2-admin(https://github.com/mdmsoft/yi...)修改,yii2-admin只是web方式,這個相當于yii2-admin的rest版本。適合用于前后端分離項目,rest方式提供接口,實現對接口的權限控制。項目地址:https://github....
摘要:原文來自上一篇文章講了用戶的注冊,驗證和登錄,這一篇文章按照約定來說說之中的用戶和權限控制。探尋上面的一些列設置和代碼更改,已經實現了一小部分的用戶控制登錄的用戶才能發表。 原文來自: https://jellybool.com/post/programming-with-yii2-user-access-controls 上一篇文章講了用戶的注冊,驗證和登錄,這一篇文章按照...
閱讀 2895·2021-11-17 09:33
閱讀 3674·2021-11-16 11:42
閱讀 3495·2021-10-26 09:50
閱讀 1343·2021-09-22 15:49
閱讀 3049·2021-08-10 09:44
閱讀 3680·2019-08-29 18:36
閱讀 3940·2019-08-29 16:43
閱讀 2229·2019-08-29 14:10