Search by

atoms / database-illuminate

dabernathy89

Illuminate bridge for Atoms: the Laravel query builder and Eloquent models against an Atom's own SQLite database.

0.9.1 2026-10-31 05:17 UTC

This package is auto-updated.

Last update: 2026-10-31 05:46:59 UTC


README

The Laravel query builder and Eloquent models against an Atom's own SQLite database. Supports Illuminate Database 12 and 13 on PHP 8.3 or later. 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.9",
        "illuminate/database": "^13.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 as db()->transaction(). Roll an inner transaction back by throwing; a hand-called rollBack() inside a nested transaction() 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 the server_version connection 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.