kemel91 / laravel-tarantool
A Tarantool based Eloquent ORM and Query builder for Laravel
Requires
- php: ^8.2
- illuminate/container: ^11.0 || ^12.0 || ^13.0
- illuminate/database: ^11.0 || ^12.0 || ^13.0
- illuminate/events: ^11.0 || ^12.0 || ^13.0
- illuminate/support: ^11.0 || ^12.0 || ^13.0
- rybakit/msgpack: ^0.7 || ^0.9
- tarantool/client: ^0.9.0 || ^0.10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.75
- phpunit/phpunit: ^11.5 || ^12.0 || ^13.0
README
This package adds functionalities to the Eloquent model and Query builder for Tarantool, using the original Laravel API. This library extends the original Laravel classes, so it uses exactly the same methods.
Installation
Laravel Version Compatibility
| Laravel | Package |
|---|---|
| 11.x | 2.x |
| 12.x | 2.x |
| 13.x | 2.x |
Via Composer
composer require kemel91/laravel-tarantool
Configuration
You can use Tarantool either as the main database, either as a side database. To do so, add a new tarantool connection to config/database.php:
'tarantool' => [ 'driver' => 'tarantool', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 3301), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), 'type' => env('DB_CONNECTION_TYPE', 'tcp'), 'sql_seq_scan' => env('DB_TT_SQL_SEQ_SCAN', true), 'options' => [ 'connect_timeout' => 5, 'max_retries' => 3 ] ],
The package also accepts driver_options.connection_type for backward compatibility, but type is the preferred option.
On Tarantool 3.x, SQL sequential scans are disabled by default. To keep Laravel's migration repository and other framework queries working as expected, the package enables sql_seq_scan for each connection by default. You can disable this behavior with 'sql_seq_scan' => false if you want strict Tarantool scan checks.
Running tests with Docker Compose
The repository now includes a Docker-based test environment, so PHP and Tarantool do not need to be installed locally.
Start Tarantool:
docker compose up -d tarantool
Use a specific Tarantool image if needed:
TARANTOOL_IMAGE=tarantool/tarantool:2 docker compose up -d tarantool
Run the full Laravel compatibility matrix:
docker compose run --rm --user "$(id -u):$(id -g)" php sh bin/test-matrix
Run tests for a single Laravel major version:
docker compose run --rm --user "$(id -u):$(id -g)" php sh bin/test-laravel 12
Set tarantool as main database
'default' => env('DB_CONNECTION', 'tarantool'),
You can also configure connection with dsn string:
'tarantool' => [ 'driver' => 'tarantool', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE'), ],