danieltm / matrix_orm
Orm para php
README
Este ORM foi desenvolvido para facilitar o mapeamento de objetos para tabelas de banco de dados em PHP. Ele fornece uma estrutura básica para a realização de operações CRUD (Create, Read, Update, Delete) em seu banco de dados.
Pré-requisitos
Certifique-se de que você tenha as seguintes dependências instaladas e configuradas:
-
PHP: Certifique-se de ter o PHP instalado em seu ambiente de desenvolvimento. Este ORM foi desenvolvido em PHP.
-
Banco de Dados: Este ORM usa .env como ambiente para pegar os dados de coneção por tanto deve-se criar um .env na raiz do projeto onde foi definido geralmente /src
Uso Básico
Para começar a usar este ORM, siga estas etapas:
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. Estenda a Classe 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 configuraçoes de tipagem
@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 configuraçoes de mapeamento
Mapeia todas as classes que possuirem o em cima dela
/**
* @teble
*/
- Inicialize o Carregador de Classes
Em seu código principal, você deve inicializar o carregador de classes DbLoader
. Certifique-se de incluir o arquivo DbLoader.php
que faz parte deste ORM.
use matrixOrm\DbLoader; include "./src/MappingQuerys/DbLoader.php"; DbLoader::autoloader(); DbLoader::init();
Usando os Métodos da Classe DbManager
Agora que você estendeu a classe DbManager
e inicializou o carregador de classes, você pode usar os métodos fornecidos por esta classe para interagir com o banco de dados. Alguns dos principais métodos disponíveis são:
-
findAll($withJoin = true(opicional))
: Recupera todos os registros da tabela associada à sua classe modelo. Use$withJoin
para incluir ou excluir junções com outras tabelas. -
findById($id, $withJoin = true(opicional))
: Recupera um registro pelo ID. Use$withJoin
para incluir ou excluir junções com outras tabelas. -
Métodos mágicos como
findByPropertyName($value, $withJoin = true(opicional))
: Esses métodos permitem que você pesquise registros com base em propriedades específicas da classe modelo. -
save(DbManager $entity)
: Salva um objeto na tabela associada. Certifique-se de passar um objeto da mesma classe modelo como argumento. -
Create()
: Cria a tabela no banco de dados com base na estrutura da classe modelo. esse o proprio ORM ja vai automaticamente iniciar. -
findBy(atrubuto Da sua Classe)($withJoin = true(opicional))
: Recupera todos os registros da tabela associada à sua classe modelo usando a condição do seu atrubuto. Use$withJoin
para incluir ou excluir junções com outras tabelas.
Exemplos de Uso
Aqui estão alguns exemplos de como usar este ORM:
formatação
$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"];
Recuperar os registros
$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");
Deletar os registros
$seuModel = new SuaClasseModel(); $resultados = $seuModel->deleteById(0);
$seuModel = new SuaClasseModel(); $resultados = $seuModel->deleteByNome("nome");
Adicionar registros
$seuModel = new SuaClasseModel(); $outroModelo = new OutroModelo(); $seuModel->setNome("nome"); $seuModel->setIdade(20); $seuModel->setOutroModelo($outroModelo); $resultados = $seuModel->save($seuModel);
alterar registros
$seuModel = new SuaClasseModel(); $seuModel->findId(0); $seuModel->setNome("teste"); $seuModel->Update($seuModel);