ThinkPHP通過集成Phinx實現(xiàn)數(shù)據(jù)庫遷移與數(shù)據(jù)填充,首先安裝think-phinx并初始化生成配置文件;接著創(chuàng)建遷移文件定義表結(jié)構(gòu),使用migrate命令執(zhí)行變更,rollback回滾;再創(chuàng)建Seeder類編寫測試數(shù)據(jù),通過seed:run插入數(shù)據(jù);注意命名匹配、避免生產(chǎn)環(huán)境隨意回滾,結(jié)合模型時慎用事件,確保數(shù)據(jù)庫變更可版本化管理。
ThinkPHP 中實現(xiàn)數(shù)據(jù)庫遷移和數(shù)據(jù)填充主要依賴于 phinx 工具,它被集成在 ThinkPHP 的命令行工具中,用來管理數(shù)據(jù)庫結(jié)構(gòu)變更和測試數(shù)據(jù)的生成。以下是具體使用方法。
確保你已安裝 ThinkPHP 的官方命令行工具:
composer require topthink/think-phinx安裝完成后,執(zhí)行初始化命令:
php think phinx:init這會在項目根目錄生成 phinx.php 配置文件,自動讀取 ThinkPHP 的數(shù)據(jù)庫配置(config/database.php)。
立即學習“PHP免費學習筆記(深入)”;
使用以下命令創(chuàng)建一個遷移文件:
php think phinx:create CreateUsersTable該命令會在 database/migrations/ 目錄下生成一個以時間戳命名的 PHP 文件,例如:
20241010120000_create_users_table.php
編輯這個文件,定義表結(jié)構(gòu):
<font color="#006600">public function change(): void { $table = $this->table('users'); $table->addColumn('name', 'string', ['limit' => 50]) ->addColumn('email', 'string', ['limit' => 100]) ->addColumn('age', 'integer', ['default' => 0]) ->addColumn('created_at', 'datetime') ->create(); }</font>
ThinkPHP 使用 Phinx 的 change() 方法,支持正向和逆向操作,系統(tǒng)可自動推斷如何回滾。
運行以下命令應用所有未執(zhí)行的遷移:
php think phinx:migrate這會將數(shù)據(jù)庫結(jié)構(gòu)更新到最新狀態(tài)。如果想指定環(huán)境(如測試環(huán)境),可加參數(shù):
php think phinx:migrate -e testing回滾上一次遷移:
php think phinx:rollback填充用于添加測試或初始數(shù)據(jù)。創(chuàng)建一個填充類:
php think phinx:seed:create UserSeeder該命令在 database/seeds/ 目錄下生成 UserSeeder.php 文件。
編輯文件內(nèi)容:
<font color="#006600">public function run(): void { $data = [ [ 'name' => 'Alice', 'email' => 'alice@example.com', 'age' => 25, 'created_at' => date('Y-m-d H:i:s'), ], [ 'name' => 'Bob', 'email' => 'bob@example.com', 'age' => 30, 'created_at' => date('Y-m-d H:i:s'), ] ]; $this->table('users')->insert($data)->saveData(); }</font>
運行填充:
php think phinx:seed:run UserSeeder若要運行所有填充文件:
php think phinx:seed:run基本上就這些。掌握遷移和填充后,團隊協(xié)作和部署會更順暢,數(shù)據(jù)庫變更也能版本化管理。
以上就是thinkphp數(shù)據(jù)庫遷移和數(shù)據(jù)填充怎么用的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
PHP怎么學習?PHP怎么入門?PHP在哪學?PHP怎么學才快?不用擔心,這里為大家提供了PHP速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號