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.6
- illuminate/database: ^12.0
Requires (Dev)
None
Suggests
- atoms/testing: AtomHarness drives an Atom against a real SQLite file, bridge included, in plain PHPUnit.
Provides
None
Conflicts
None
Replaces
None
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.6",
"illuminate/database": "^12.0"
}
}
use Atoms\Atom; use Atoms\DatabaseIlluminate\EloquentBridge; 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.