alanseiden/doctrine-dbal-ibmi

Doctrine DBAL drivers for DB2 on the IBM i platform

0.0.8 2021-10-13 15:14 UTC

README

Lint Quality assurance Build and test

Doctrine DBAL drivers for DB2 on the IBM i platform.

Based on the original work by @cassvail in doctrine/dbal#910.

Usage

First, install with Composer:

composer require alanseiden/doctrine-dbal-ibmi

Configuration

This package provides 2 drivers: OdbcDriver and DB2Driver.

OdbcDriver requires the pdo_odbc extension, and is the recommended driver.

DB2Driver requires the ibm_db2 extension, and is not recommended for new connections.

These drivers can be configured using the instructions described in the Doctrine DBAL docs.

<?php

use Doctrine\DBAL\DriverManager;
use DoctrineDbalIbmi\Driver\OdbcDriver;

$connectionParams = [
    'driverClass' => OdbcDriver::class,
    'host' => 'localhost',
    'dbname' => 'mydb',
    'user' => 'user',
    'password' => 'secret',
];

$conn = DriverManager::getConnection($connectionParams);

Examples

Doctrine ORM

You can manually configure an EntityManager like so:

<?php

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Setup;
use DoctrineDbalIbmi\Driver\OdbcDriver;

$configuration = Setup::createAnnotationMetadataConfiguration([
    __DIR__ . '/../path/to/your/entities/',
], true);

$connection = [
    'driverClass' => OdbcDriver::class,
    'host' => 'localhost',
    'dbname' => 'mydb',
    'user' => 'user',
    'password' => 'secret',
    'persistent' => false,
];

$entityManager = EntityManager::create($connection, $configuration);

You can then use this instance of \Doctrine\ORM\EntityManager.

Zend Expressive

In your connection configuration, use these settings when configuring a Zend Expressive application:

<?php

use DoctrineDbalIbmi\Driver\OdbcDriver;

return [
    'doctrine' => [
        'connection' => [
            'orm_default' => [
                'driverClass' => OdbcDriver::class,
                'params' => [
                    'host' => 'localhost',
                    'dbname' => 'mydb',
                    'user' => 'user',
                    'password' => 'secret',
                    'persistent' => false,
                ],
            ],
        ],
    ],
];