atoms / database-illuminate
Illuminate bridge for Atoms: the Laravel query builder and Eloquent models against an Atom's own SQLite database.
Requires
- php: ^8.3
- ext-pdo: *
- atoms/core: ^0.4
- illuminate/database: ^12.0
Suggests
- atoms/testing: AtomHarness drives an Atom against a real SQLite file, bridge included, in plain PHPUnit.
README
The Laravel query builder and Eloquent models against an Atom's own SQLite
database. This package runs inside the Atom — add it to
atoms-composer.json (together with illuminate/database), not to your
application's composer.json:
{
"require": {
"atoms/database-illuminate": "^0.4",
"illuminate/database": "^12.0"
}
}
use Atoms\Atom; use Atoms\DatabaseIlluminate\EloquentBridge; final class GameRoom extends Atom { public function record(string $player, int $score): array { $db = EloquentBridge::boot($this->db()); $db->table('scores')->insert(['player' => $player, 'score' => $score]); return Score::query()->orderByDesc('score')->limit(10)->get()->toArray(); } }
Three deliberate differences from a stock Laravel connection, all inherited from the runtime the Atom executes in:
- Nested
transaction()calls reuse the outer transaction instead of creating savepoints — the same semantics asdb()->transaction(). Roll an inner transaction back by throwing; a hand-calledrollBack()inside a nestedtransaction()discards the entire write set and the enclosing wrappers then fail loudly on the already-closed transaction.afterCommit()/afterRollBack()hooks are unsupported (no transactions manager is installed; they throw). - Schema work is refused (
ATOMS-E106): Atoms migrations own DDL. getServerVersion()answers from configuration (the runtime cannot ask the engine), overridable via theserver_versionconnection config key.
Eloquent models never cross the Atom boundary — return ->toArray() shapes
from Atom methods. See the Atoms documentation
for the full semantics notes, including the wide-integer (int64) limits of
the Cloudflare runtime.
Development and support
This package is developed in the Atoms monorepo. Its standalone repository is a read-only distribution mirror; report issues and send pull requests to the monorepo. Licensed under the MIT License.