Does Laravel Work With Turso?
You can use Laravel with Turso via libSQL PHP drivers, but it requires custom setup since there's no official Laravel driver yet—expect workarounds for some ORM features.
Quick Facts
How Laravel Works With Turso
Laravel can connect to Turso through the libSQL PHP client library or by using HTTP-based drivers, but Eloquent ORM has limitations since it expects traditional MySQL/PostgreSQL drivers. You'll need to either use raw queries, extend Laravel's database layer, or use Turso's HTTP API directly. The primary challenge is that Turso is SQLite-based, and while SQLite is powerful, some Laravel features like certain migration commands and query builders assume relational database server semantics. Connection pooling and authentication work through Turso's token-based system, which differs from standard Laravel database config. For simple CRUD applications and read-heavy workloads, the integration works well. For complex applications with heavy Eloquent usage, you'll spend time adapting or working around ORM assumptions.
Best Use Cases
Laravel with Turso HTTP Connection
composer require libsql/libsql-php<?php
// config/database.php - Custom Turso connection
'turso' => [
'driver' => 'sqlite',
'url' => env('TURSO_CONNECTION_URL'),
'database' => ':memory:',
],
// Use in controller
use Illuminate\Support\Facades\DB;
class ProductController {
public function index() {
// Raw query approach (most reliable with Turso)
$products = DB::connection('turso')
->select('SELECT * FROM products WHERE active = ?', [true]);
return response()->json($products);
}
public function store(Request $request) {
DB::connection('turso')
->insert('INSERT INTO products (name, price) VALUES (?, ?)',
[$request->name, $request->price]);
return response()->json(['created' => true]);
}
}
Known Issues & Gotchas
Eloquent relationships and query builder features designed for server-based databases may not translate directly to SQLite semantics
Fix: Use raw queries for complex operations, or consider using Turso's HTTP API as your data layer instead of going through Eloquent
Transaction isolation levels differ between SQLite and MySQL/PostgreSQL that Laravel developers expect
Fix: Test transaction behavior thoroughly and avoid relying on READ COMMITTED isolation assumptions
Turso's token authentication requires custom environment configuration outside Laravel's default database.php config
Fix: Create a custom connection class or use Turso's HTTP client wrapper to handle token management
Laravel migrations assume ALTER TABLE capabilities that SQLite/Turso has limited support for
Fix: Write migrations carefully, test them, and use SQLite-compatible migration patterns
Alternatives
- •PlanetScale (MySQL-compatible) + Laravel - Full Eloquent support with edge replication
- •Supabase (PostgreSQL) + Laravel - Complete ORM compatibility with real-time features
- •SQLite locally + Fly.io deployment - Simpler but without distributed edge benefits
Resources
Related Compatibility Guides
Explore more compatibility guides