Doctrine DBAL drivers for DB2 on the IBM i platform.
Based on the original work by @cassvail in doctrine/dbal#910.
First, install with Composer:
composer require alanseiden/doctrine-dbal-ibmi
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);
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
.
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,
],
],
],
],
];