Enhances Doctrine with PostgreSQL-specific features and functions. Supports PostgreSQL 9.4+ and PHP 8.1+.
// Register types with Doctrine
Type::addType('jsonb', "MartinGeorgiev\\Doctrine\\DBAL\\Types\\Jsonb");
Type::addType('text[]', "MartinGeorgiev\\Doctrine\\DBAL\\Types\\TextArray");
// Use in your Doctrine entities
#[ORM\Column(type: 'jsonb')]
private array $data;
#[ORM\Column(type: 'text[]')]
private array $tags;
// Use in DQL
$query = $em->createQuery('
SELECT e
FROM App\Entity\Post e
WHERE CONTAINS(e.tags, ARRAY[:tags]) = TRUE
AND JSON_GET_FIELD(e.data, :field) = :value
');
This package provides comprehensive Doctrine support for PostgreSQL features:
- Array Types
- Integer arrays (
int[]
,smallint[]
,bigint[]
) - Float arrays (
real[]
,double precision[]
) - Text arrays (
text[]
) - Boolean arrays (
bool[]
) - JSONB arrays (
jsonb[]
)
- Integer arrays (
- JSON Types
- Native JSONB support
- JSON field operations
- JSON construction and manipulation
- Network Types
- IP addresses (
inet
,inet[]
) - Network CIDR notation (
cidr
,cidr[]
) - MAC addresses (
macaddr
,macaddr[]
)
- IP addresses (
- Array Operations
- Contains (
@>
) - Is contained by (
<@
) - Overlaps (
&&
) - Array aggregation with ordering
- Contains (
- JSON Operations
- Field access (
->
,->>
) - Path operations (
#>
,#>>
) - JSON containment and existence operators
- Field access (
- Text Search
- Full text search (
to_tsvector
,to_tsquery
) - Pattern matching (
ILIKE
,SIMILAR TO
) - Regular expressions
- Full text search (
- Array Functions
- Array aggregation (
array_agg
) - Array manipulation (
array_append
,array_prepend
,array_remove
,array_replace
,array_shuffle
) - Array dimensions and length
- Array aggregation (
- JSON Functions
- JSON construction (
json_build_object
,jsonb_build_object
) - JSON manipulation and transformation
- JSON construction (
- Date Functions
- Aggregate Functions
- Aggregation with ordering and distinct (
array_agg
,json_agg
,jsonb_agg
) - Special aggregates (
any_value
,xmlagg
)
- Aggregation with ordering and distinct (
Full documentation:
composer require martin-georgiev/postgresql-for-doctrine
See our Common Use Cases and Examples for detailed code samples.
composer run-unit-tests
We also provide integration tests that run against a real PostgreSQL database to ensure compatibility:
# Start PostgreSQL using Docker Compose
docker-compose up -d
# Run integration tests
composer run-integration-tests
# Stop PostgreSQL
docker-compose down -v
See tests-integration/README.md for more details.
If you find this package useful for your projects, please consider sponsoring the development via GitHub Sponsors. Your support helps maintain this package, create new features, and improve documentation.
Benefits of sponsoring:
- Priority support for issues and feature requests
- Direct access to the maintainer
- Help sustain open-source development
- Star the repository
- Report issues
- Contribute with code or documentation
- Share the project with others
This package is licensed under the MIT License. See the LICENSE file for details.