PHPackages                             eril/db-tbl - 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. eril/db-tbl

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

eril/db-tbl
===========

PHP CLI tool to generate type-safe table schema classes from your database.

04PHPCI passing

Since Jan 12Pushed 4mo agoCompare

[ Source](https://github.com/erilshackle/db-tbl-php)[ Packagist](https://packagist.org/packages/eril/db-tbl)[ RSS](/packages/eril-db-tbl/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

db-tbl
======

[](#db-tbl)

[![PHP Version](https://camo.githubusercontent.com/ea69ff8021a683c7b1ff683bfd909a5c960efd54004b1782ad84add19aecdac8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e312d383839324246)](https://www.php.net/) [![License](https://camo.githubusercontent.com/b8cadaa967891081f8f165695470689986c028821dd8a040132f6e661795dc0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c7565)](LICENSE) [![Version](https://camo.githubusercontent.com/062a7de7f7368cd29cdb0811dfc9bcfcb7a0af97d36179ca390ac7ba881abb47/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6572696c736861636b6c652f64622d74626c2d706870)](https://github.com/erilshackle/db-tbl-php/releases)

`db-tbl` gera automaticamente **classes PHP** a partir do schema **da** base de dados, criando constantes para tabelas, colunas, enums e foreign keys. Facilita o desenvolvimento com **referência direta e type-safe** à base de dados.

---

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

[](#-características)

- Geração automática de classes PHP a partir do schema
- Modos de saída: `file` (um arquivo) ou `psr4` (uma classe por tabela)
- Suporte MySQL, PostgreSQL e SQLite
- Alias automáticos para tabelas
- CLI simples para gerar, sincronizar e verificar schema
- Compatível com PSR-4 e autoload moderno

---

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

[](#-instalação)

```
composer require eril/db-tbl
```

---

⚙️ Configuração
---------------

[](#️-configuração)

Na primeira execução, um arquivo `dbtbl.yaml` será criado:

```
database:
  driver: mysql            # mysql | pgsql | sqlite
  host: env(DB_HOST)
  port: env(DB_PORT)
  name: env(DB_NAME)
  user: env(DB_USER)
  password: env(DB_PASS)

output:
  mode: file               # file | psr4
  path: "./"
  namespace: ""            # obrigatório no modo psr4

naming:
  strategy: full           # full | short
  abbreviation:
    max_length: 15
    dictionary_lang: en
```

> **Nota:** `namespace` é obrigatório apenas no modo `psr4`.

---

🛠️ Uso via CLI
--------------

[](#️-uso-via-cli)

```
# Gerar classes no modo padrão (file)
php vendor/bin/db-tbl

# Gerar em modo PSR-4
php vendor/bin/db-tbl --psr4

# Verificar mudanças no schema
php vendor/bin/db-tbl --check
```

---

📁 Estrutura de saída
--------------------

[](#-estrutura-de-saída)

### Modo `file` (padrão)

[](#modo-file-padrão)

Gera um único arquivo `Tbl.php`:

```
final class Tbl {
    public const users = 'users';
    public const as_users = 'users u';
}

/** `table: users` (alias: `u`) */
final class TblUsers {
    public const __table = 'users';
    public const __alias = 'users u';

    public const id = 'id';
    public const name = 'name';
    public const status = 'status';

    public const enum_status_active = 'active';
    public const enum_status_inactive = 'inactive';

    /** references `roles` → `id` */
    public const fk_roles = 'role_id';
}
```

### Modo `psr4`

[](#modo-psr4)

Gera múltiplos arquivos:

```
src/Database/
├── Tbl.php
├── TblUsers.php
├── TblRoles.php
└── TblProducts.php

```

---

🔌 Integração com Composer
-------------------------

[](#-integração-com-composer)

```
{
  "autoload": {
    "psr-4": { "App\\Database\\": "src/Database/" },
    "files": [ "src/Database/Tbl.php" ]
  }
}
```

```
composer dump-autoload
```

No código:

```
use App\Database\Tbl;
use App\Database\TblUsers;

echo Tbl::users;                   // 'users'
echo TblUsers::id;                 // 'id'
echo TblUsers::enum_status_active; // 'active'
```

---

💻 Exemplo de query usando constantes
------------------------------------

[](#-exemplo-de-query-usando-constantes)

```
$sql = sprintf(
    "SELECT u.%s, r.%s FROM %s u JOIN %s r ON u.%s = r.%s WHERE u.%s = ?",
    TblUsers::name,
    TblRoles::name,
    Tbl::as_users,
    Tbl::as_roles,
    TblUsers::fk_roles,
    TblRoles::id,
    TblUsers::status
);
```

---

🚨 Limitações e cuidados
-----------------------

[](#-limitações-e-cuidados)

- Arquivos gerados **não devem ser editados manualmente**
- `output.namespace` é obrigatório no modo PSR-4
- Diretório de saída precisa de permissão de escrita
- Classes existentes serão sobrescritas
- Hash do schema é baseado na estrutura, **não nos dados**

---

🌐 Conexão customizada
---------------------

[](#-conexão-customizada)

```
database:
  connection: 'App\\Database\\Connection::getPdo'
```

O método deve retornar uma instância de `PDO`.

---

🧩 Abreviações e nomenclatura
----------------------------

[](#-abreviações-e-nomenclatura)

```
naming:
  strategy: short
  abbreviation:
    max_length: 15
    dictionary_lang: pt
```

Exemplo de dicionário customizado (`PHP`):

```
return = [
    "users": "usr",
    "products": "prod"
];
```

---

🤝 Contribuição
--------------

[](#-contribuição)

1. Fork e clone
2. Crie branch: `git checkout -b minha-feature`
3. Commit: `git commit -am 'Add feature'`
4. Push e PR

---

📄 Licença
---------

[](#-licença)

MIT License. Veja [LICENSE](LICENSE).

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance52

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/7912c97a74168d99f71aea2bb33bf6ed2f85ed0e8c990a41c59b8b4a2f009c9f?d=identicon)[erilshackle](/maintainers/erilshackle)

---

Top Contributors

[![erilshackle](https://avatars.githubusercontent.com/u/74083037?v=4)](https://github.com/erilshackle "erilshackle (19 commits)")

### Embed Badge

![Health badge](/badges/eril-db-tbl/health.svg)

```
[![Health](https://phpackages.com/badges/eril-db-tbl/health.svg)](https://phpackages.com/packages/eril-db-tbl)
```

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.4k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M546](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M211](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

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