Looking to hire Laravel developers? Try LaraJobs

laravel-tarantool maintained by kemel91

Description
A Tarantool based Eloquent ORM and Query builder for Laravel
Author
Last update
2026/03/24 13:16 (dev-master)
License
Downloads
64

Comments
comments powered by Disqus

Laravel Tarantool

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'),
],