danieltm/matrix_orm

1.0.0 2023-10-07 19:40 UTC

This package is auto-updated.

Last update: 2024-09-16 20:05:16 UTC


README

此 ORM 是为了简化在 PHP 中将对象映射到数据库表而开发的。它提供了一个基本结构来执行数据库的 CRUD(创建、读取、更新、删除)操作。

先决条件

请确保您已安装和配置以下依赖项

  1. PHP:请确保您已安装 PHP 开发环境。此 ORM 是在 PHP 中开发的。

  2. 数据库:此 ORM 使用 .env 作为环境来获取连接数据,因此应在项目根目录中创建一个 .env 文件,通常位于 /src

基本使用

要开始使用此 ORM,请按照以下步骤操作

    composer require danieltm/matrix_orm
    namespace SeuNamespace;
    include "vendor/autoload.php"
    use matrix_orm\DbManager;

    echo Connection::ShowDirEnv(); // retorna o diretorio para se criar o .env com base on index ou procura o env onde vc criou
    HOST = localhost
    USER = root
    PASSWORD =
    DATABASE = seuBanco
    PORT = 3306 #opicional caso esteza rodando em outra porta
    DIALECT = mysql #opicional caso esteza rodando em outro banco de dados

1. 扩展 DbManager

namespace SeuNamespace;
use matrix_orm\DbManager;

    /**
     * @teble
     */
class SuaClasseModel extends DbManager
{
    // Defina suas propriedades e métodos aqui
        /**
         * @var varchar
         * @notnull
         * @unique
         */
        private $nome;
        /**
         * @var int
         */
        private $idade;
        /**
         * @var identity
         */
        private $id;

        function __construct($nome = "", $idade = "")
        {
            $this->nome = $nome;
            $this->idade = $idade;
        }
}

1.1 类型配置

@var varchar
@var json
@var blob
@var int
@var uuid
@var float
@var date
@var datetime
@var enum
@var bit
@var time
@notnull
@unique

1.2 映射配置

Mapeia todas as classes que possuirem o em cima dela
/**
 * @teble
 */
  1. 初始化类加载器

在您的代码主文件中,您必须初始化类加载器 DbLoader。请确保包含此 ORM 的一部分 DbLoader.php 文件。

use matrixOrm\DbLoader;
include "./src/MappingQuerys/DbLoader.php";

DbLoader::autoloader();
DbLoader::init();

使用 DbManager 类的 方法

现在您已扩展了 DbManager 类并初始化了类加载器,您可以使用此类提供的方法与数据库进行交互。一些主要的方法包括

  • findAll($withJoin = true(可选)):从与您的模型类关联的表中检索所有记录。使用 $withJoin 包含或排除与其他表的连接。

  • findById($id, $withJoin = true(可选)):通过 ID 检索一个记录。使用 $withJoin 包含或排除与其他表的连接。

  • findByPropertyName($value, $withJoin = true(可选)) 之类的魔术方法:这些方法允许您根据模型类的特定属性搜索记录。

  • save(DbManager $entity):将对象保存到关联的表中。请确保传递与模型类相同的对象作为参数。

  • Create():根据模型类的结构在数据库中创建表。该 ORM 将自动启动。

  • findBy(您的类属性):使用您的属性条件从与您的模型类关联的表中检索所有记录。使用 $withJoin 包含或排除与其他表的连接。

使用示例

以下是一些使用此 ORM 的示例

格式化

$seuModel = new SuaClasseModel();

//formatado(altera o istacia atual para os cados)
$seuModel->findById(0);
$seuModel->getNome();

//caso sem formatar
$seuModel->setFormat(false);
$resultados = $seuModel->findById(0);
$resultados["nome"];

检索记录

$seuModel = new SuaClasseModel();
$resultados = $seuModel->findAll();
$seuModel = new SuaClasseModel();
$resultados = $seuModel->findId(0);
$seuModel = new SuaClasseModel();
//caso tenha $nome na sua variavel
$resultados = $seuModel->findByNome("nome");

删除记录

$seuModel = new SuaClasseModel();
$resultados = $seuModel->deleteById(0);
$seuModel = new SuaClasseModel();
$resultados = $seuModel->deleteByNome("nome");

添加记录

$seuModel = new SuaClasseModel();
$outroModelo = new OutroModelo();
$seuModel->setNome("nome");
$seuModel->setIdade(20);
$seuModel->setOutroModelo($outroModelo);
$resultados = $seuModel->save($seuModel);

修改记录

$seuModel = new SuaClasseModel();
$seuModel->findId(0);
$seuModel->setNome("teste");
$seuModel->Update($seuModel);