Skip to content

Instantly share code, notes, and snippets.

@krisanalfa
Created October 16, 2015 08:25
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save krisanalfa/9f8c49d5f76d3cb3a9d8 to your computer and use it in GitHub Desktop.
Save krisanalfa/9f8c49d5f76d3cb3a9d8 to your computer and use it in GitHub Desktop.
Slim + Eloquent + Oracle

Your composer.json file:

{
    "require": {
        "slim/slim": "^2.6",
        "illuminate/database": "^5.1",
        "symfony/var-dumper": "^2.7",
        "yajra/laravel-oci8": "^2.4"
    }
}

Snippet:

<?php

require dirname(__DIR__).'/vendor/autoload.php';

use Slim\Slim;
use yajra\Oci8\Oci8Connection;
use Illuminate\Database\Capsule\Manager as Capsule;
use yajra\Oci8\Connectors\OracleConnector as Connector;

$app = new Slim();
$capsule = new Capsule();

$capsule->addConnection(array(
    'driver'       => 'oracle',
    'host'         => 'YOURHOST',
    'port'         => '1521',
    'database'     => 'YOUR_DB',
    'service_name' => 'xe',
    'username'     => 'YOUR_DB',
    'password'     => 'SECRET',
    'schema'       => 'YOUR_DB',
    'charset'      => 'AL32UTF8',
    'prefix'       => '',
));

$capsule->bootEloquent();

$capsule->setAsGlobal();

$capsule->getDatabaseManager()->extend('oracle', function ($config) {
    $connector = new Connector();
    $connection = $connector->connect($config);
    $db = new Oci8Connection($connection, $config['database'], $config['prefix']);

    // set oracle session variables
    $sessionVars = [
        'NLS_TIME_FORMAT'         => 'HH24:MI:SS',
        'NLS_DATE_FORMAT'         => 'YYYY-MM-DD HH24:MI:SS',
        'NLS_TIMESTAMP_FORMAT'    => 'YYYY-MM-DD HH24:MI:SS',
        'NLS_TIMESTAMP_TZ_FORMAT' => 'YYYY-MM-DD HH24:MI:SS TZH:TZM',
        'NLS_NUMERIC_CHARACTERS'  => '.,',
    ];

    // Like Postgres, Oracle allows the concept of "schema"
    if (isset($config['schema'])) {
        $sessionVars['CURRENT_SCHEMA'] = $config['schema'];
    }

    $db->setSessionVars($sessionVars);

    return $db;
});


$app->get('/', function () use ($app, $capsule) {
    $app->response->headers->set('Content-Type', 'application/json');
    $app->response->write(json_encode((array) $capsule->table('USER')->first()));
});

$app->run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment