migro/php-core-migration

一个提供代码优先方法的PHP数据库迁移库。它设计简单,易于使用,允许开发者直接在代码中定义和管理数据库架构更改。

v1.0.0 2024-03-01 18:09 UTC

This package is auto-updated.

Last update: 2024-09-16 01:01:35 UTC


README

描述

此存储库包含在Core PHP中使用代码优先方法的示例和最佳实践。它旨在帮助开发者了解和实施此方法在他们的PHP项目中。

目录

  1. 安装
  2. 使用方法
  3. 贡献

安装

要安装和运行此项目,您需要在计算机上安装PHP和MySQL。

  1. 克隆此存储库。
  2. 导航到项目目录。
  3. 使用您的数据库凭据更新config.php文件。

config.php文件应如下所示

<?php

$config = [
    "host" => "localhost",
    "username" => "root",
    "password" => "",
    "database" => "php_code_first_approach_db",
];

使用方法

要连接到数据库,您需要从connection.php文件中调用connectToDatabase函数。以下是connection.php文件的外观

<?php
function connectToDatabase($config)
{
    $conn = mysqli_connect($config['host'], $config['username'], $config['password'], $config['database'])or die("lost");
    if (!$conn) {
        die('Connection failed: ' . mysqli_connect_error());
    }

    return $conn;
}

要在数据库中创建表,您可以使用位于migration文件夹中的BaseMigration类的createTable函数。以下是BaseMigration类的外观

<?php

class BaseMigration {
    public static function createTable($conn, $sql) {
        if ($conn->query($sql) === TRUE) {
            echo "Table created successfully";
        } else {
            echo "Error creating table: " . $conn->error;
        }
    }
}

BaseMigration类被其他类扩展以创建特定表。例如,RoleMigration类在不存在的情况下创建一个tbl_userRoles表。以下是RoleMigration类的外观

<?php

class RoleMigration extends BaseMigration
{
    public static function up($conn)
    {
        $sql = "SHOW TABLES LIKE 'tbl_userRoles'";
        $result = $conn->query($sql);
        if ($result->num_rows == 0) {
            $sql = "CREATE TABLE tbl_userRoles (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(30) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )";
            self::createTable($conn, $sql);
            echo "tbl_userRoles has created";
        }else{
            echo "tbl_userRoles already exist";
        }
    }
}

在设置数据库连接并定义迁移类之后,您需要执行迁移来在数据库中创建表。这是在Migrate.php文件中完成的。以下是Migrate.php文件的外观

<?php
require_once '../config/config.php';
require_once '../config/connection.php';
require_once 'BaseMigration.php';
require_once 'RoleMigration.php';
require_once 'UserMigration.php';

$conn = connectToDatabase($config);

$roleMigration = RoleMigration::up($conn);
$userMigration = UserMigration::up($conn);
?>

如果您已经设置了一个本地服务器环境(如XAMPP、WAMP或MAMP),您也可以通过在浏览器中输入本地服务器URL并附加到Migrate.php文件的路径来导航到Migrate.php文件。例如

http:///your_project_directory/database/migrations/Migrate.php

如果您的表不存在,将创建它

如需进一步指导,请访问我的文章https://getsmartsolution.com/code-first-approach-into-core-php/

贡献

目前,此项目仅支持创建表。我正在开发一个完整的Core PHP迁移系统。如果您有任何想法或改进建议,请随时提交pull request。