我來自Django(Python)背景,現在我正在開發一個基於Laravel(PHP)的項目。我有一些選項可以自動生成數據庫表嗎?我可以像Django的'python manage syncdb'一樣在Laravel中自動創建數據庫表嗎?
回答
是的,使用Schema Builder和Migrations。
首先,你需要在遷移表安裝到DB:
$ php artisan migrate:install
然後創建一個遷移
$ php artisan migrate:make create_users_table
這將在application/migrations
創建一個PHP文件。現在,您可以編輯它擁有你想要的設置,即
<?php
class Create_Users_Table
{
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->string('username');
$table->string('email');
$table->string('phone')->nullable();
$table->text('about');
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
}
,並使用
$ php artisan migrate
您更改數據庫結構每次執行它,你必須創建一個新的遷移和執行它之後。
說你要users
有一個新列的hometown
代替phone
您需要創建一個新的遷移
$ php artistan migrate:make users_table_add_hometown
和編輯新的文件包含
<?php
class Users_Table_Add_Hometown
{
public function up()
{
Schema::table('users', function($table)
{
$table->string('hometown');
$table->drop_column('phone');
});
}
public function down()
{
Schema::table('users', function($table)
{
$table->string('phone')->nullable();
$table->drop_column('hometown');
});
}
}
你現在有兩個遷移,創建表格和修改表格。
artisan migrate
命令足夠聰明,只能執行系統中新增的遷移。因此,如果您的一個同事在長假結束後回家,並且有一些新的遷移,它將自動只導入離開後創建的那些遷移。
還有一件事。當create table的定義中有一些錯誤時,表被創建到數據庫中,但是當我回滾遷移時不會刪除(我必須去mysql手動刪除它)。任何想法? – 2013-04-21 10:01:23
我已經添加了up()和down()遷移的能力(沒有很好的記錄)。 – 2013-04-21 10:14:58
此外,重要的是不要從遷移文件名中刪除日期。他們決定他們正在執行的順序。 – 2013-04-21 10:17:52
- 1. Django syncdb不會創建數據庫表
- 2. 我可以從PHP創建我自己的數據庫嗎?
- 3. Django多個數據庫:選擇數據庫在哪裏syncdb創建表
- 4. 在Django中,我可以在創建對象時指定數據庫嗎?
- 5. 我可以在Django上自動更改數據庫表名稱嗎?
- 6. 我可以爲django測試建立一個數據庫嗎?
- 7. 我可以在樣式中創建自己的屬性嗎?
- 8. SQLAlchemy可以自動從數據庫模式創建關係嗎?
- 9. 我可以創建django模型,它不會在數據庫中保存嗎?
- 10. Python - 我可以創建一個創建唯一列表的函數嗎?
- 11. 我可以在雲中創建數據庫嗎?
- 12. 我可以在數據庫目錄中創建文件嗎?
- 13. 我可以在Nunit中創建數據庫死鎖測試嗎?
- 14. 可以動態地在AWS RDS中創建數據庫嗎?
- 15. orm2可以自動創建表嗎?
- 16. 我可以讓我的表根據同一記錄上的不同數據自動創建數據嗎?
- 17. 我可以使用python創建像瀏覽器遊戲一樣的flash嗎?
- 18. 我可以創建Corda自定義數據表嗎?
- 19. 我可以在MYSQL數據庫表中插入圖像嗎?
- 20. 我可以像在C#中一樣在Java中創建擴展嗎?
- 21. 我的自定義標籤欄可以像iPhone一樣創建嗎?
- 22. 我可以在自己的庫中創建像log4j這樣的第三方庫的「輕量」依賴項嗎?
- 23. 我可以爲IE創建一個單獨的樣式表嗎?
- 24. 我可以在django中創建動態列(和模型)嗎?
- 25. 我可以在Ruby/Java/C#中創建一個像這樣的對象嗎?
- 26. 用C創建的GDBM數據庫可以用Python打開嗎?
- 27. 刪除/創建數據庫後,Django無法syncdb
- 28. 我可以在FTP服務器上創建SQL數據庫嗎?
- 29. java中的數據庫可以像在Android中一樣簡單嗎?
- 30. Django以自定義方式初始化數據庫時syncdb
我的回答有幫助嗎?如果是這樣,你能接受嗎? – 2013-04-21 09:11:44