douglas-joanes/jhonestack-db

Um componente ORM minimalista e reutilizável extraído do Jhonestack Core.

Maintainers

Package info

github.com/douglasjoanes/jhone-db

pkg:composer/douglas-joanes/jhonestack-db

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-04-23 20:28 UTC

This package is auto-updated.

Last update: 2026-04-23 20:40:06 UTC


README

License: MIT PHP Version

O Jhone Db é um componente de abstração de banco de dados (ORM) minimalista, extraído do ecossistema Jhonestack Core. Ele foi desenvolvido para ser leve, independente e seguro, permitindo que você utilize os padrões Active Record e Query Builder em qualquer projeto PHP.

🚀 Recursos Principais

  • DatabaseFactory: Gerenciamento de conexão Singleton (MySQL e PostgreSQL).
  • Query Builder Fluente: Construção de queries SQL de forma legível e encadeada.
  • Model Abstrato: Implementação de classes de modelo com suporte a fillable e save().
  • Segurança: Uso rigoroso de Prepared Statements para evitar SQL Injection.
  • Relacionamentos: Suporte nativo para hasMany, hasOne e belongsTo.
  • Soft Deletes: Gestão de exclusão lógica de registros.

📦 Instalação

Adicione o repositório ao seu arquivo composer.json ou instale via terminal (ajuste o nome do pacote conforme sua configuração no Packagist):

composer require douglas-joanes/jhonestack-db

⚙️Configuração Inicial

Para começar, inicialize a conexão e injete-a no Model base da sua aplicação:

use Jhonestack\Database\DatabaseFactory;
use Jhonestack\Database\Model;

$config = [
    'driver'   => 'mysql',
    'host'     => 'localhost',
    'port'     => '3306',
    'database' => 'nome_do_banco',
    'username' => 'usuario',
    'password' => 'senha',
    'charset'  => 'utf8mb4'
];

$pdo = DatabaseFactory::create($config);
Model::setConnection($pdo);

📖 Guia de Uso

Definindo um Model

namespace App\Models;

use Jhonestack\Database\Model;

class User extends Model
{
    protected string $table = 'users';
    protected array $fillable = ['nome', 'email', 'senha'];
    protected bool $usesSoftDeletes = false;
}

Consultas com Query Builder

// Buscar todos os usuários ativos
$users = User::query()
    ->where('status', 'ativo')
    ->orderBy('nome', 'ASC')
    ->get();

// Buscar um registro específico
$user = User::find(1);

Inserção e Atualização (Active Record)

// Buscar todos os usuários ativos
$users = User::query()
    ->where('status', 'ativo')
    ->orderBy('nome', 'ASC')
    ->get();

// Buscar um registro específico
$user = User::find(1);

Exclusão

$user = User::find(1);
$user->delete();

🛠️ Estrutura do Projeto

src/
├── DatabaseFactory.php  # Gerenciador de conexão
├── Model.php            # Classe base para entidades
└── QueryBuilder.php     # Motor de construção de queries