This integration allows the use of odbc_* php function with Laravel framework instead of PDO.
It emulates PDO class used by Laravel.
composer require abram/laravel-odbc
To add source in your project
It's very simple to configure:
1) Add database to database.php file
'odbc-connection-name' => [
'driver' => 'odbc',
'dsn' => 'OdbcConnectionName',
'database' => 'DatabaseName',
'host' => '127.0.0.1',
'username' => 'username',
'password' => 'password'
]
2) Add service provider in app.php file
'providers' => [
...
Abram\Odbc\ODBCServiceProvider::class
]
You can use Laravel, Eloquent ORM and other Illuminate's components as usual.
# Facade
$books = DB::connection('odbc-connection-name')->table('books')->where('Author', 'Abram Andrea')->get();
# ORM
$books = Book::where('Author', 'Abram Andrea')->get();
If you want to provide a custom getLastInsertId() function, you can extends ODBCProcessor class and override function.
class CustomProcessor extends ODBCProcessor
{
/**
* @param Builder $query
* @param null $sequence
* @return mixed
*/
public function getLastInsertId(Builder $query, $sequence = null)
{
return $query->getConnection()->table($query->from)->latest('id')->first()->getAttribute($sequence);
}
}
To use another class instead default one you can update your connection in:
'odbc-connection-name' => [
'driver' => 'odbc',
'dsn' => 'OdbcConnectionName',
'database' => 'DatabaseName',
'host' => '127.0.0.1',
'username' => 'username',
'password' => 'password',
'options' => [
'processor' => Illuminate\Database\Query\Processors\Processor::class, //default
'grammar' => [
'query' => Illuminate\Database\Query\Grammars\Grammar::class, //default
'schema' => Illuminate\Database\Schema\Grammars\Grammar::class //default
]
]
]