douglas-joanes / jhonestack-db
Um componente ORM minimalista e reutilizável extraído do Jhonestack Core.
v1.0.0
2026-04-23 20:28 UTC
Requires
- php: >=8.1
README
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
fillableesave(). - Segurança: Uso rigoroso de Prepared Statements para evitar SQL Injection.
- Relacionamentos: Suporte nativo para
hasMany,hasOneebelongsTo. - 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