PHPackages                             israel-nogueira/galaxy-db - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. israel-nogueira/galaxy-db

ActiveLibrary[Database &amp; ORM](/categories/database)

israel-nogueira/galaxy-db
=========================

ORM simples para PHP e Base de Dados

v2.0.0(4mo ago)21071[1 PRs](https://github.com/israel-nogueira/galaxy-db/pulls)1GPL-3.0-or-laterPHPPHP &gt;=7.4

Since Jun 2Pushed 4mo ago1 watchersCompare

[ Source](https://github.com/israel-nogueira/galaxy-db)[ Packagist](https://packagist.org/packages/israel-nogueira/galaxy-db)[ RSS](/packages/israel-nogueira-galaxy-db/feed)WikiDiscussions Galaxy-V2 Synced today

READMEChangelog (5)DependenciesVersions (6)Used By (1)

GalaxyDB
========

[](#galaxydb)

ORM PHP moderno, type-safe e com suporte nativo a jQuery DataTables.

Características
---------------

[](#características)

- ✅ **Fluent Interface** - Encadeamento de métodos
- ✅ **Prepared Statements** - Segurança automática
- ✅ **Multi-Database** - MySQL, PostgreSQL, SQLite, Oracle, MSSQL, Firebird
- ✅ **Query Builder** - Construtor de queries intuitivo
- ✅ **DataTables Integration** - Suporte nativo para jQuery DataTables
- ✅ **Type Safe** - Strict types e validações
- ✅ **Transaction Support** - Controle transacional
- ✅ **Connection Pool** - Reutilização de conexões

Instalação
----------

[](#instalação)

```
composer require israelnogueira/galaxydb
```

Uso Básico
----------

[](#uso-básico)

```
use IsraelNogueira\galaxyDB\Core\GalaxyDB;

// Criar instância
$db = new GalaxyDB();

// Select
$users = $db->table('users')
            ->where('status', 'active')
            ->orderBy('name', 'ASC')
            ->limit(10)
            ->select();

// Insert
$db->table('users');
$db->name = 'João';
$db->email = 'joao@email.com';
$userId = $db->insert();

// Update
$db->table('users')
   ->where('id', 1)
   ->update(['name' => 'João Silva']);

// Delete
$db->table('users')
   ->where('id', 1)
   ->delete();
```

Query Builder
-------------

[](#query-builder)

### Where Clauses

[](#where-clauses)

```
$db->where('status', 'active');
$db->where('age', 18, '>=');
$db->whereIn('department', ['TI', 'RH', 'Vendas']);
$db->whereBetween('salary', 1000, 5000);
$db->whereLike('name', '%João%');
$db->whereNull('deleted_at');
$db->whereNotNull('email');
$db->orWhere('status', 'pending');
```

### Ordering &amp; Grouping

[](#ordering--grouping)

```
$db->orderBy('name', 'ASC')
   ->orderBy('created_at', 'DESC')
   ->groupBy('department')
   ->distinct();
```

### Limits &amp; Pagination

[](#limits--pagination)

```
$db->limit(10);           // LIMIT 10
$db->limit(10, 20);       // LIMIT 20, 10 (offset, limit)
```

Métodos Úteis
-------------

[](#métodos-úteis)

```
// Encontrar por ID
$user = $db->table('users')->find(1);

// Encontrar ou falhar
$user = $db->table('users')->findOrFail(1);

// Primeiro registro
$user = $db->table('users')
           ->where('email', 'joao@email.com')
           ->first();

// Contar registros
$count = $db->table('users')
            ->where('status', 'active')
            ->count();

// Verificar existência
$exists = $db->table('users')
             ->where('email', 'joao@email.com')
             ->exists();

// Pegar apenas uma coluna
$names = $db->table('users')->pluck('name');

// Processar em chunks
$db->table('users')->chunk(100, function($users) {
    foreach ($users as $user) {
        // Processar usuário
    }
});
```

Transações
----------

[](#transações)

```
$db->beginTransaction();

try {
    $db->table('users');
    $db->name = 'João';
    $db->insert();

    $db->table('logs');
    $db->action = 'user_created';
    $db->insert();

    $db->commit();
} catch (Exception $e) {
    $db->rollback();
    throw $e;
}
```

Batch Insert
------------

[](#batch-insert)

```
$users = [
    ['name' => 'João', 'email' => 'joao@email.com'],
    ['name' => 'Maria', 'email' => 'maria@email.com'],
    ['name' => 'Pedro', 'email' => 'pedro@email.com']
];

$db->table('users')->insertBatch($users);
```

jQuery DataTables Integration
-----------------------------

[](#jquery-datatables-integration)

### Uso Básico

[](#uso-básico-1)

```
// Auto-detecta requisição DataTables e processa
$_EXEMPLO = new GalaxyDB();
$_EXEMPLO->table("users");
$_EXEMPLO->where('status', 'active');
$_EXEMPLO->prepare_dataTable();
$result = $_EXEMPLO->dataTable();

header('Content-Type: application/json');
die(json_encode($result));
```

### Com Colunas Específicas

[](#com-colunas-específicas)

```
$db = new GalaxyDB();
$db->table("products");
$db->where('available', 1);
$db->prepare_dataTable(
    ['name', 'sku', 'description'],  // Colunas pesquisáveis
    ['name', 'price', 'created_at']  // Colunas ordenáveis (opcional)
);
$result = $db->dataTable();

echo json_encode($result);
```

### Encadeamento Completo

[](#encadeamento-completo)

```
$response = (new GalaxyDB())
    ->table("orders")
    ->where('status', 'pending')
    ->where('created_at', '2024-01-01', '>=')
    ->prepare_dataTable(['order_number', 'customer', 'total'])
    ->dataTable();

die(json_encode($response));
```

### Resposta DataTables

[](#resposta-datatables)

Quando há requisição DataTables:

```
{
    "draw": 1,
    "recordsTotal": 1500,
    "recordsFiltered": 45,
    "data": [
        {"id": 1, "name": "João", "email": "joao@example.com"},
        {"id": 2, "name": "Maria", "email": "maria@example.com"}
    ]
}
```

Quando NÃO há requisição DataTables (fallback):

```
[
    {"id": 1, "name": "João", "email": "joao@example.com"},
    {"id": 2, "name": "Maria", "email": "maria@example.com"}
]
```

### HTML Frontend

[](#html-frontend)

```

            ID
            Nome
            Email
            Telefone

$(document).ready(function() {
    $('#usersTable').DataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: 'api/users.php',
            type: 'POST'
        },
        columns: [
            { data: 'id' },
            { data: 'name' },
            { data: 'email' },
            { data: 'phone' }
        ],
        language: {
            url: '//cdn.datatables.net/plug-ins/1.13.7/i18n/pt-BR.json'
        }
    });
});

```

Classes Estendidas
------------------

[](#classes-estendidas)

```
class User extends GalaxyDB
{
    protected string $table = 'users';
    protected array $columnsBlocked = ['password'];

    public function getActive(): array
    {
        return $this->where('status', 'active')
                    ->where('deleted_at', null, 'IS NULL')
                    ->select();
    }

    public function getActiveDataTable(): array
    {
        return $this->where('status', 'active')
                    ->prepare_dataTable(['name', 'email', 'phone'])
                    ->dataTable();
    }
}

// Uso
$user = new User();
$activeUsers = $user->getActive();
$dataTableResponse = $user->getActiveDataTable();
```

Configuração de Conexão
-----------------------

[](#configuração-de-conexão)

### Via Array

[](#via-array)

```
$db = new GalaxyDB([
    'DB_TYPE' => 'mysql',
    'DB_HOST' => 'localhost',
    'DB_PORT' => '3306',
    'DB_DATABASE' => 'meu_banco',
    'DB_USERNAME' => 'usuario',
    'DB_PASSWORD' => 'senha',
    'DB_CHAR' => 'utf8mb4'
]);
```

### Via Variáveis de Ambiente

[](#via-variáveis-de-ambiente)

```
// .env
DB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=meu_banco
DB_USERNAME=usuario
DB_PASSWORD=senha
DB_CHAR=utf8mb4

// PHP
$db = new GalaxyDB();
```

### Conexão Customizada em Classe Estendida

[](#conexão-customizada-em-classe-estendida)

```
class User extends GalaxyDB
{
    protected string $table = 'users';
    protected ?array $customConnectData = [
        'DB_TYPE' => 'mysql',
        'DB_HOST' => 'localhost',
        'DB_DATABASE' => 'usuarios_db'
    ];
}
```

Bancos de Dados Suportados
--------------------------

[](#bancos-de-dados-suportados)

- MySQL / MariaDB
- PostgreSQL
- SQLite
- Oracle
- Microsoft SQL Server
- Firebird

Raw Queries
-----------

[](#raw-queries)

```
// Query com retorno
$result = $db->raw('SELECT * FROM users WHERE id = :id', ['id' => 1]);

// Query sem retorno (INSERT, UPDATE, DELETE)
$affected = $db->exec('UPDATE users SET status = :status', ['status' => 'active']);
```

Debug
-----

[](#debug)

```
$db->setDebug(true);
$users = $db->table('users')->select();

// Ver última query executada
echo $db->getLastQuery();

// Ver último ID inserido
echo $db->lastInsertId();

// Ver linhas afetadas
echo $db->affectedRows();
```

Stored Procedures
-----------------

[](#stored-procedures)

```
// Executa stored procedure chamando sp_nome_da_procedure
$result = $db->sp_listar_usuarios(1, 'active');
```

Licença
-------

[](#licença)

MIT

Autor
-----

[](#autor)

Israel Nogueira

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance78

Regular maintenance activity

Popularity13

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~335 days

Total

4

Last Release

120d ago

Major Versions

v1.0.2 → v2.0.02026-03-05

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/43965887?v=4)[Israel Nogueira](/maintainers/IsraelNogueira)[@israelnogueira](https://github.com/israelnogueira)

---

Top Contributors

[![israel-nogueira](https://avatars.githubusercontent.com/u/12586467?v=4)](https://github.com/israel-nogueira "israel-nogueira (280 commits)")

---

Tags

database-managementmariadb-databasemariadb-mysqlmongodbmongodb-databasemysqlmysql-databaseormorm-frameworkpostgrid

### Embed Badge

![Health badge](/badges/israel-nogueira-galaxy-db/health.svg)

```
[![Health](https://phpackages.com/badges/israel-nogueira-galaxy-db/health.svg)](https://phpackages.com/packages/israel-nogueira-galaxy-db)
```

###  Alternatives

[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k117.2M118](/packages/jdorn-sql-formatter)[propel/propel1

Propel is an open-source Object-Relational Mapping (ORM) for PHP5.

8351.6M87](/packages/propel-propel1)[pgvector/pgvector

pgvector support for PHP

198741.5k12](/packages/pgvector-pgvector)[jfelder/oracledb

Oracle DB driver for Laravel

11518.4k](/packages/jfelder-oracledb)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
