PHPackages                             jinjian/pgschema - 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. jinjian/pgschema

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

jinjian/pgschema
================

postgresql schemas for laravel

014PHP

Since Dec 9Pushed 5y ago1 watchersCompare

[ Source](https://github.com/rock-jin-2020/PGSchema)[ Packagist](https://packagist.org/packages/jinjian/pgschema)[ RSS](/packages/jinjian-pgschema/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependenciesVersions (1)Used By (0)

PostgreSQL Schema manager for Laravel
=====================================

[](#postgresql-schema-manager-for-laravel)

This is very useful when you are working with multi-tenants applications with PostgreSQL Schemas.

With facade helper functions, you can create/drop/switch schemas easily. This package also provide artisan commands for migrations and seeds supports for each schemas.

PGSchema will check and only affects when specific connection driver is `pgsql`. So you can using PGSchema to your projects safely with any database connection drivers without error occurred.

Laravel version
---------------

[](#laravel-version)

Current package version works for Laravel `5+` .

Installation
------------

[](#installation)

1. Use composer to add the package into your project

```
composer require jinjian/pgschema:dev-master

```

2. Add service provider into your providers array in `config/app.php`

```
Rock\PGSchema\PGSchemaServiceProvider::class,

```

3. Add alias to aliases array in `config/app.php`

```
'PGSchema' => Rock\PGSchema\Facades\PGSchema::class,

```

Artisan Commands
----------------

[](#artisan-commands)

### pgschema:migrate

[](#pgschemamigrate)

`pgschema:migrate` add extra `schema` option to Laravel `migrate` command, you can specific the database schema for migrations. And it will auto install `migrations` repository table for the schema.

```
Usage:
  pgschema:migrate [options]

Options:
      --database[=DATABASE]  The database connection to use.
      --schema[=SCHEMA]      The database schema to use.
      --force                Force the operation to run when in production.
      --path[=PATH]          The path of migrations files to be executed.
      --pretend              Dump the SQL queries that would be run.
      --seed                 Indicates if the seed task should be re-run.
      --step                 Force the migrations to be run so they can be rolled back individually.
  -h, --help                 Display this help message
  -q, --quiet                Do not output any message
  -V, --version              Display this application version
      --ansi                 Force ANSI output
      --no-ansi              Disable ANSI output
  -n, --no-interaction       Do not ask any interactive question
      --env[=ENV]            The environment the command should run under
  -v|vv|vvv, --verbose       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Run the database migrations

```

### pgschema:rollback

[](#pgschemarollback)

`pgschema:rollback` add extra `schema` option to Laravel `migrate:rollback` command.

```
Usage:
  pgschema:rollback [options]

Options:
      --database[=DATABASE]  The database connection to use.
      --force                Force the operation to run when in production.
      --path[=PATH]          The path of migrations files to be executed.
      --pretend              Dump the SQL queries that would be run.
      --step[=STEP]          The number of migrations to be reverted.
      --schema[=SCHEMA]      The database schema to use
  -h, --help                 Display this help message
  -q, --quiet                Do not output any message
  -V, --version              Display this application version
      --ansi                 Force ANSI output
      --no-ansi              Disable ANSI output
  -n, --no-interaction       Do not ask any interactive question
      --env[=ENV]            The environment the command should run under
  -v|vv|vvv, --verbose       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Rollback the last database migration

```

### pgschema:reset

[](#pgschemareset)

`pgschema:reset` add extra `schema` option to Laravel `migrate:reset` command.

```
Usage:
  pgschema:reset [options]

Options:
      --database[=DATABASE]  The database connection to use.
      --force                Force the operation to run when in production.
      --path[=PATH]          The path of migrations files to be executed.
      --pretend              Dump the SQL queries that would be run.
      --schema[=SCHEMA]      The database schema to use
  -h, --help                 Display this help message
  -q, --quiet                Do not output any message
  -V, --version              Display this application version
      --ansi                 Force ANSI output
      --no-ansi              Disable ANSI output
  -n, --no-interaction       Do not ask any interactive question
      --env[=ENV]            The environment the command should run under
  -v|vv|vvv, --verbose       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Rollback all database migrations

```

### pgschema:refresh

[](#pgschemarefresh)

`pgschema:refresh` add extra `schema` option to Laravel `migrate:refresh` command.

```
Usage:
  pgschema:refresh [options]

Options:
      --database[=DATABASE]  The database connection to use.
      --force                Force the operation to run when in production.
      --path[=PATH]          The path of migrations files to be executed.
      --seed                 Indicates if the seed task should be re-run.
      --seeder[=SEEDER]      The class name of the root seeder.
      --step[=STEP]          The number of migrations to be reverted & re-run.
      --schema[=SCHEMA]      The database schema to use
  -h, --help                 Display this help message
  -q, --quiet                Do not output any message
  -V, --version              Display this application version
      --ansi                 Force ANSI output
      --no-ansi              Disable ANSI output
  -n, --no-interaction       Do not ask any interactive question
      --env[=ENV]            The environment the command should run under
  -v|vv|vvv, --verbose       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Reset and re-run all migrations

```

### pgschema:seed

[](#pgschemaseed)

`pgschema:seed` add extra `schema` option to Laravel `db:seed` command.

```
Usage:
  pgschema:seed [options]

Options:
      --class[=CLASS]        The class name of the root seeder [default: "DatabaseSeeder"]
      --database[=DATABASE]  The database connection to seed
      --schema[=SCHEMA]      The database schema to seed
      --force                Force the operation to run when in production.
  -h, --help                 Display this help message
  -q, --quiet                Do not output any message
  -V, --version              Display this application version
      --ansi                 Force ANSI output
      --no-ansi              Disable ANSI output
  -n, --no-interaction       Do not ask any interactive question
      --env[=ENV]            The environment the command should run under
  -v|vv|vvv, --verbose       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Seed the database with records

```

### pgschema:create-schema

[](#pgschemacreate-schema)

`pgschema:create-schema` create `schema` for `database` .

```
Usage:
  pgschema:create-schema [options] [--]

Arguments:
  schema                     The database schema to create

Options:
      --database[=DATABASE]  The database connection to use
  -h, --help                 Display this help message
  -q, --quiet                Do not output any message
  -V, --version              Display this application version
      --ansi                 Force ANSI output
      --no-ansi              Disable ANSI output
  -n, --no-interaction       Do not ask any interactive question
      --env[=ENV]            The environment the command should run under
  -v|vv|vvv, --verbose       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

```

Facade Helper Functions
-----------------------

[](#facade-helper-functions)

### Create new Schema

[](#create-new-schema)

`PGSchema::create($schemaName, $databaseName)`

if create is call without $databaseName argument, it using the default connection.

### Drop Schema

[](#drop-schema)

`PGSchema::drop($schemaName, $databaseName)`

if drop is call without $databaseName argument, it using the default connection.

### Switch Schema

[](#switch-schema)

`PGSchema::schema($schemaName, $databaseName)`

if schema is call without $schemaName argument, it switches to the public schema (default) if schema is call without $databaseName argument, it using the default connection.

### Iterating Schemas

[](#iterating-schemas)

`PGSchema::each(Closure $callback, $databaseName)`

if each is call without $databaseName argument, it using the default connection.

License
-------

[](#license)

MIT:

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity31

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/049abb4259e3e3ca9801b18a759f27efe529c7ae2a4d2961177c0a985680f8b8?d=identicon)[Rock.Jin](/maintainers/Rock.Jin)

---

Top Contributors

[![rock-jin-2020](https://avatars.githubusercontent.com/u/75713126?v=4)](https://github.com/rock-jin-2020 "rock-jin-2020 (9 commits)")

### Embed Badge

![Health badge](/badges/jinjian-pgschema/health.svg)

```
[![Health](https://phpackages.com/badges/jinjian-pgschema/health.svg)](https://phpackages.com/packages/jinjian-pgschema)
```

###  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.3k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

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

Use ramsey/uuid as a Doctrine field type.

90340.3M208](/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)
