rezon73 / dbal-vertica-driver
Doctrine DBAL driver for Vertica in Laravel
1.4.3
2020-11-16 20:46 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-odbc: *
- ext-pdo: *
- doctrine/dbal: ~2.3
- illuminate/database: ^5.5|^6.0|^7.0
- illuminate/support: ^5.5|^6.0
- symfony/options-resolver: ^3.2|^4.3
Requires (Dev)
- phpmd/phpmd: ^2.4
- phpunit/phpunit: ^5.6
- squizlabs/php_codesniffer: ^2.7
Conflicts
README
Doctrine DBAL connector driver for Vertica. Ready for use in Laravel / Lumen
Requirements
- php >= 7.2
- php_odbc extension
- Vertica drivers
- Doctrine 2 DBAL
Installation
PHP extentions:
apt-get install php-odbc php-pdo php-json
Vertica drivers:
Make ODBC and Vertica drivers to work together:
- Download and extract Vertica drivers from official website https://my.vertica.com/vertica-client-drivers/ (it should match your Vertica Db version)
- Extract driver under /opt/vertica/
- create/edit file: /etc/odbc.ini (example)
- create/edit file: /etc/odbcinst.ini (example)
- create/edit file: /etc/vertica.ini (example)
All the rest:
- Add to your composer.json:
"repositories": [ { "type": "vcs", "url": "https://github.com/rezon73/dbal-vertica-driver.git" } ]
composer install
Integration in Laravel
.env
DB_HOST_VERTICA=127.0.0.1
#DB_PORT_VERTICA=5433 (DONT SET PORT! IT MUST BE EXACTLY INTEGER! GETTING FROM dafaults in )
DB_DATABASE_VERTICA=dbname
DB_USERNAME_VERTICA=username
DB_PASSWORD_VERTICA=password
config/database.php
<?php return [ 'connections' => [ 'vertica' => [ 'driver' => 'vertica', 'host' => env('DB_HOST_VERTICA', '127.0.0.1'), 'port' => env('DB_PORT_VERTICA', 5433), //EXACTLY DIGITS, NOT STRING 'database' => env('DB_DATABASE_VERTICA', 'forge'), 'username' => env('DB_USERNAME_VERTICA', 'forge'), 'password' => env('DB_PASSWORD_VERTICA', ''), 'schema' => 'public', 'sslmode' => 'allow', 'options' => [ PDO::ATTR_EMULATE_PREPARES => false, ] ] ];
app/Providers/AppServiceProvider.php
<?php class AppServiceProvider extends ServiceProvider { public function boot() { App::bind('db.connector.vertica', function () { return new VerticaDriver; }); DB::resolverFor('vertica', function ($connection, $database, $prefix, $config) { return new VerticaConnection($connection, $database, $prefix, $config); }); } }