PHPackages                             alberto255345/schema-differ - 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. alberto255345/schema-differ

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

alberto255345/schema-differ
===========================

Framework para gerar migrations de diff comparando schema esperado e o atual do banco de dados

1.0.5(1y ago)08MITPHPPHP &gt;=7.4

Since Feb 12Pushed 1y ago1 watchersCompare

[ Source](https://github.com/alberto255345/schema-differ)[ Packagist](https://packagist.org/packages/alberto255345/schema-differ)[ RSS](/packages/alberto255345-schema-differ/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (1)Versions (5)Used By (0)

Schema Differ
=============

[](#schema-differ)

[![Latest Version](https://camo.githubusercontent.com/a413293b2ddbae17c7efab80cdecd4ba5f5f7a3c80a352b2383d282173cef473/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616c626572746f3235353334352f736368656d612d6469666665722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alberto255345/schema-differ)[![License](https://camo.githubusercontent.com/ddd9d1849c00774f8c1cead62bd8f07d329b3bd57efb846b035c5f94bb520873/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f616c626572746f3235353334352f736368656d612d6469666665722e7376673f7374796c653d666c61742d737175617265)](LICENSE)

O **Schema Differ** é um framework para gerar migrations de *diff* que comparam o *schema* esperado (definido por suas migrations ou entidades) com o *schema* atual do banco de dados. Ele automatiza a criação de migrations com os métodos `up` e `down` para sincronizar o banco de dados conforme as alterações detectadas, facilitando a manutenção e evolução do seu sistema.

Recursos
--------

[](#recursos)

- **Extração do Schema Atual:** Obtém informações do banco (exemplo fictício) ou pode ser estendido para usar *information\_schema* ou métodos nativos do Laravel.
- **Extração do Schema Esperado:** Utiliza definições (exemplo fixo) das migrations ou das entidades.
- **Comparação de Schemas:** Identifica tabelas ou colunas ausentes e outras diferenças.
- **Geração Automática de Migration:** Cria um arquivo de migration contendo os métodos `up` (para aplicar as mudanças) e `down` (para reverter).
- **Comando Artisan:** Fornece o comando `diff:migration` para executar o processo diretamente via linha de comando.
- **PSR-4 Autoload:** Compatível com a estrutura de autoload do Composer.

Estrutura do Pacote
-------------------

[](#estrutura-do-pacote)

```
schema-differ/
├── src/
│   ├── Console/
│   │   └── Commands/
│   │       └── GenerateDiffMigration.php
│   ├── SchemaDiffer.php
│   └── ServiceProvider.php
├── composer.json
└── README.md

```

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

[](#instalação)

### Via Packagist

[](#via-packagist)

Adicione o pacote ao seu projeto Laravel utilizando o Composer:

```
composer require alberto255345/schema-differ:^1.0.2
```

### Configuração para Laravel

[](#configuração-para-laravel)

Se o seu projeto Laravel não estiver usando o auto-discovery, adicione o Service Provider manualmente no arquivo `config/app.php`:

```
'providers' => [
    // Outros providers...
    DiffFramework\ServiceProvider::class,
],
```

Uso
---

[](#uso)

### Executando o Comando Artisan

[](#executando-o-comando-artisan)

O pacote registra o comando Artisan `diff:migration`. Para gerar a migration que reflete a diferença entre o schema esperado e o atual, execute:

```
php artisan diff:migration
```

Esse comando realizará os seguintes passos:

1. Instanciará a classe `SchemaDiffer`, que compara o schema atual (exemplo fictício) com o schema esperado.
2. Gerará o conteúdo da migration com os métodos `up` e `down`.
3. Criará um arquivo de migration na pasta `database/migrations` com um nome baseado em timestamp (ex.: `2025_02_11_123456_diff_migration_generated.php`).

### Detalhes Técnicos

[](#detalhes-técnicos)

- **Escapamento de Variáveis:**
    O código gerado para a migration usa *heredoc* para incluir trechos do Blueprint do Laravel. Note que, dentro das strings, os sinais de dólar são escapados (ex.: `\$table`) para que o código gerado contenha literalmente `$table` e não tente interpretar variáveis durante a execução do comando.
- **Regeneração do Autoload:**
    Se você realizar alterações no pacote ou na sua estrutura, execute:

    ```
    composer dump-autoload
    ```

    para garantir que todas as classes sejam carregadas corretamente.

Atualizando o Pacote
--------------------

[](#atualizando-o-pacote)

Após realizar alterações no seu pacote, siga estes passos para atualizar a versão no GitHub e no Packagist:

1. **Atualize o `composer.json` (opcional):**
    Atualize a chave `"version"` se desejar (por exemplo, `"version": "1.0.2"`).
2. **Commit e Push:**

    ```
    git add .
    git commit -m "Atualiza versão para 1.0.2 e corrige escapes de variáveis"
    git push origin master
    ```
3. **Crie uma Tag no Git:**

    ```
    git tag -a v1.0.2 -m "Lançamento da versão 1.0.2"
    git push --tags
    ```
4. **Packagist:**
    Se o webhook estiver configurado, o Packagist atualizará automaticamente. Caso contrário, acesse a página do pacote no Packagist e clique em "Update" para forçar a atualização.

Problemas Comuns
----------------

[](#problemas-comuns)

- **Extensão bcmath:**
    Caso alguma dependência (por exemplo, `moneyphp/money`) exija a extensão `bcmath` e ela não esteja instalada, você pode instalar via:

    ```
    sudo apt-get install php8.2-bcmath
    ```

    (Ajuste a versão conforme sua instalação do PHP.)
- **Mensagens do Xdebug:**
    As mensagens do Xdebug podem aparecer durante a execução do Composer ou Artisan. Geralmente, elas não impedem o funcionamento do pacote, mas se desejar, você pode desabilitar o Xdebug temporariamente.

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

[](#contribuição)

Contribuições são muito bem-vindas! Abra *issues* ou envie *pull requests* para ajudar a melhorar o pacote.

Licença
-------

[](#licença)

Este projeto está licenciado sob a [Licença MIT](LICENSE).

Contato
-------

[](#contato)

Em caso de dúvidas ou sugestões, abra uma issue em [GitHub Issues](https://github.com/alberto255345/schema-differ/issues).

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance43

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

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 ~0 days

Total

4

Last Release

455d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9dcc64eadaf0803ad5d77ed340b6d288b6548e81d10bea6739ff1ddacf745beb?d=identicon)[alberto255345](/maintainers/alberto255345)

---

Top Contributors

[![alberto255345](https://avatars.githubusercontent.com/u/13904556?v=4)](https://github.com/alberto255345 "alberto255345 (3 commits)")

### Embed Badge

![Health badge](/badges/alberto255345-schema-differ/health.svg)

```
[![Health](https://phpackages.com/badges/alberto255345-schema-differ/health.svg)](https://phpackages.com/packages/alberto255345-schema-differ)
```

###  Alternatives

[owen-it/laravel-auditing

Audit changes of your Eloquent models in Laravel

3.4k33.0M95](/packages/owen-it-laravel-auditing)[staudenmeir/eloquent-json-relations

Laravel Eloquent relationships with JSON keys

1.1k5.8M24](/packages/staudenmeir-eloquent-json-relations)[bavix/laravel-wallet

It's easy to work with a virtual wallet.

1.3k1.1M11](/packages/bavix-laravel-wallet)[dragon-code/migrate-db

Easy data transfer from one database to another

15717.4k](/packages/dragon-code-migrate-db)[gearbox-solutions/eloquent-filemaker

A package for getting FileMaker records as Eloquent models in Laravel

6454.8k2](/packages/gearbox-solutions-eloquent-filemaker)[cybercog/laravel-ownership

Laravel Ownership simplify management of Eloquent model's owner.

9126.6k3](/packages/cybercog-laravel-ownership)

PHPackages © 2026

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