articulate
Articulate, only half built: his head and torso sit beside a box with his arms and legs sticking out of it

Bear with me. I'm still being put together.

When I'm finished, I'll be the one looking after your database, so your objects don't have to.

Articulate is a data mapper ORM for Laravel, and an alternative to Eloquent. Your entities stay plain PHP objects, and nothing is written to the database until you say so. Built for Laravel 13 on PHP 8.5.

What I'll do once I'm built

Your objects stay yours

Entities are shaped by your rules, not your tables. Constructors that only allow valid states, methods like ship(), and nothing public that shouldn't be.

I map more than columns

Money, email addresses, a whole embedded address. Your objects can use real types, and don't have to look like your schema.

I keep the magic out

Real, typed properties instead of an attribute bag. Your editor and static analysis already know what's there, no helpers needed.

It's still Laravel

Route binding, validation, queues, auth, factories and tests all work the way you'd expect. Alongside Eloquent, too.