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.
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
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
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;
}
}@var varchar
@var json
@var blob
@var int
@var uuid
@var float
@var date
@var datetime
@var enum
@var bit
@var time
@notnull
@unique
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();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$withJoinpara incluir ou excluir junções com outras tabelas. -
findById($id, $withJoin = true(opicional)): Recupera um registro pelo ID. Use$withJoinpara 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$withJoinpara incluir ou excluir junções com outras tabelas.
Aqui estão alguns exemplos de como usar este 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);