javanile/schemadb

未知的PHP数据库抽象层

0.0.47 2017-10-18 00:47 UTC

This package is auto-updated.

Last update: 2024-09-21 22:55:30 UTC


README

StyleCI Code Climate Build Status Test Coverage

Moldable 是一个用于管理 MySQL 数据库的抽象层,它具有改进的状态更改和数据库模式操作功能。Moldable 集成了一个 ORM 类来管理持久对象和适应数据库模式。

寻找贡献者 😎

我们正在寻找对 ORM 和数据库世界充满热情的(PHP爱好者)贡献者,以:

我们保证所有贡献者的可见性和感谢,在所有提及 javanile/moldable 的博客文章和文章中都有许多星标和公开引用

通过 composer 安装

我们建议通过 composer 安装,否则您将需要创建一个问题。

composer require javanile/moldable

开始使用

  • Moldable ORM:管理您的 web 应用程序中的持久对象
  • DB 操作:通过高级脚本工具与数据库交互

如何:连接到数据库

<?php
// library namespace 
use Javanile\Moldable\Database;

// initialize a database connection object 
$db = new Database([
    'host'     => 'localhost',
    'dbname'   => 'db_marketing',
    'username' => 'root',
    'password' => 'p4ssw0rd',
    'prefix'   => 'prefix_',
]);

// '$db' is ready to use for your manipulation

如何:创建 ORM 类模型

<?php
// library namespace 
use Javanile\Moldable\Storable;

// define ORM class-model
class Customer extends Storable 
{
    public $id = self::PRIMARY_KEY;
    public $name = '';
}

// instance empty object
// database tables and fields are automatic generated 
// or updated if change Customer class
$customer = new Customer();

// assign values
$customer->name = 'Franky Franco';

// now object persist on DB
$customer->store();

如何:创建模式(如果存在则更新)

<?php
// '$db' is pre-connected database object (follow: 'How to: Connect to database')

// apply method send queries to create 
// or align database to defined schema 
$db->apply([
    // customer table name
    'Customer' => [		
        // customer fields
        'id'     => $db::PRIMARY_KEY,	// define field as a primary key
        'name'   => '',			// empty string define field as VARCHAR	
        'points' => 0,			// 0 (zero) define field as INT(11)
        'born'   => $db::DATE,		// use to define as date field
        'bio'    => $db::TEXT,		// text for large string and contents
    ],
    // products table name
    'Products' => [
        // products fields		
        'id'    => $db::PRIMARY_KEY,	// define field as a primary key
        'name'  => '',			// empty string define field as VARCHAR	
        'price' => .0,			// for float number init field with point-zero ".0"	
    ],
]);

测试设置

要测试库,请按照以下步骤操作

  1. 运行本地 MySQL 数据库
  2. 将文件 phpunit.xml.dist 复制到 phpunit.xml
  3. 使用数据库连接参数更新 phpunit.xml
  4. 从项目目录运行 ./vendor/bin/phpunit

讨论

路线图

  • 支持 MongoDB 以实现透明的 MySQL/MongoDB 切换
  • 管理用于存储键值对(如设置、配置或元字段)的表
  • 管理 UUID 字段(大整数或哈希字符串),作为 PRIMARY_KEY 索引的替代
  • 灵活的连接系统,以在运行时扩展表模型字段
  • 为字段的子集定义编码/解码静态方法
  • 实现工作单元模式
  • 监听查询事件(为模型和数据库查询管理钩子/事件)