danieltm / matrix_orm
PHP Orm
1.0.0
2023-10-07 19:40 UTC
README
此 ORM 是为了简化在 PHP 中将对象映射到数据库表而开发的。它提供了一个基本结构来执行数据库的 CRUD(创建、读取、更新、删除)操作。
先决条件
请确保您已安装和配置以下依赖项
-
PHP:请确保您已安装 PHP 开发环境。此 ORM 是在 PHP 中开发的。
-
数据库:此 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
*/
- 初始化类加载器
在您的代码主文件中,您必须初始化类加载器 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);