首頁 > 後端開發 > php教程 > 教你使用PHP資料庫遷移工具'Phinx”

教你使用PHP資料庫遷移工具'Phinx”

發布: 2023-04-10 22:00:01
轉載
5886 人瀏覽過

本篇文章跟大家分享關於PHP處理中資料庫遷移工具Phinx的相關知識,phinx特別適合在開發、測試、線上資料庫同步欄位資訊、資料資訊、產生和同步測試數據等等,希望對大家有幫助。

教你使用PHP資料庫遷移工具'Phinx”

文件位址:https://tsy12321.gitbooks.io/phinx-doc/content

##1.安裝

composer require nhzex/think-phinx
登入後複製

2.執行

php vendor/bin/phinx
登入後複製

直接執行php vendor/bin/phinx init 可產生設定檔

另一個方法是直接使用php檔案做設定檔

直接執行php vendor/bin/phinx init 可產生設定檔 

另外一種方法是直接使用php檔案做設定檔案

3.使用phinx.php進行設定

<?php
$config = array(
    &#39;DB_HOST&#39; => &#39;localhost&#39;,
    &#39;DB_NAME&#39; => &#39;root&#39;,
    &#39;DB_USER&#39; => &#39;root&#39;,
    &#39;DB_PWD&#39; => &#39;&#39;,
);
$settings = $config;
#phinx.php
<?php
require &#39;db_config.php&#39;;
return array(
    "paths" => array(
        "migrations"    => "db/migrations",
        "seeds"         => "db/seeds"
    ),
    "environments"   => array(
        "defaut_migration_table"    => "phinxlog",
        "default_database"          => "lleg",
        "default_environment"       => "development"
        "production"   => array(
            "adapter"   => "mysql",
            "host"      => $settings["DB_HOST"],
            "name"      => $settings["DB_NAME"],
            "user"      => $settings["DB_USER"],
            "pass"      => $settings["DB_PWD"],
            "port"      => 3306,
            "charset"   => "utf8"
        ),
        "development"   => array(
            "adapter"   => "mysql",
            "host"      => $settings["DB_HOST"],
            "name"      => $settings["DB_NAME"],
            "user"      => $settings["DB_USER"],
            "pass"      => $settings["DB_PWD"],
            "port"      => 3306,
            "charset"   => "utf8"
        )
    )
);
登入後複製

4.執行php vendor/bin/phinx status查看連線狀態

5.執行php vendor/bin/phinx create migration

6.現在生成了created /db/migrations/20180310020523_migration.php

編輯這個檔案,新增資料庫建立內容.

public function change() {
        $user = $this->table(&#39;user&#39;);
        $user->addColumn(&#39;open_id&#39;, &#39;string&#39;, [&#39;limit&#39;=>64]);
        $user->addColumn(&#39;register_time&#39;, &#39;timestamp&#39;, [&#39;default&#39; => &#39;CURRENT_TIMESTAMP&#39;]);
        $user->addColumn(&#39;favorite_music&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的音乐&#39;]);
        $user->addColumn(&#39;favorite_vedio&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的视频数&#39;]);
        $user->addColumn(&#39;favorite_article&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的文章数&#39;]);
        $user->addColumn(&#39;baby_birthday&#39;, &#39;date&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;宝宝生日&#39;]);
        $user->addColumn(&#39;baby_sex&#39;, &#39;boolean&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;宝宝性别&#39;]);
        $user->addColumn(&#39;last_login&#39;, &#39;datetime&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;最后登陆日期&#39;]);
        $user->save();
    }
登入後複製

7.預設會加入一個自增id,作為主鍵

執行php vendor/bin/phinx migrate

8.初始化資料

執行php vendor/bin/phinx seed:create CategorySeeder

系統自動建立created ./db/seeds/CategorySeeder.php

9.修改CategorySeeder.php

執行php vendor/bin/phinx seed:run 將會進行所有Seed

10.如果想運行指定的Seed需要用- s參數指定

php vendor/bin/phinx seed:run -s CategorySeeder

11.更新表結構

當需要更新表格結構的時候,需要再建立一個migrate

執行php vendor/bin/phinx create ChangeArtist

#再將需要更新的內容寫到change函數

public function change() {
        $this->execute(&#39;alter table resource drop column artist ;&#39;);
        $resource = $this->table(&#39;resource&#39;);
        $resource->addColumn(&#39;artist&#39;, &#39;string&#39;, [&#39;limit&#39;=>128, &#39;default&#39;=>&#39;&#39;]);
        $resource->update();
    }
登入後複製

最後執行php vendor/bin/phinx migrate

之前的已經執行過的migrate不會執行, 只會執行更新的部分。

12.回滾

php vendor/bin/phinx rollback
登入後複製

13.資料填入

php vendor/bin/phinx seed:create UserSeeder
php vendor/bin/phinx seed:run -e product
登入後複製

生成文件

<?php
use Phinx\Seed\AbstractSeed;
class UserSeeder extends AbstractSeed {
    /**
     * 插入数据
     */
    public function run() {
        $data = array(
          array(
              &#39;id&#39;    => 1,
          ),
          array(
              &#39;id&#39;    => 2,
          )
        );
        $posts = $this->table(&#39;users&#39;);
        $posts->insert($data)->save();
    }
}
登入後複製

phinx特別適合在開發,測試,線上資料庫同步字段信息,數據信息,生成和同步測試數據等,所以特別適合在團隊開發流程中使用,尤其是對於一個新項目,只要在項目的開始就一直堅持使用phinx獨立部署,那麼每次變更數據庫表信息團隊成員都可以通過git或者svn的方式同步代碼然後執行上面提到的執行命令來同步庫表信息,以此避免傳統開發時不同開發環境同步庫表資訊的繁瑣和失誤的情況。

在phinx.php 有一個設定項」default_migration_table」 => 「phinxlog」 這裡是記錄變更記錄的,這也是保障不會重複執行的一個措施,所以不用擔心遺失或重複操作執行指令。

推薦學習:《

PHP影片教學

以上是教你使用PHP資料庫遷移工具'Phinx”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:Laravel技术社区公众号
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板