DB facade, migrations) without replacing Eloquent entirely. It could serve as a complementary ORM for complex persistence logic where Eloquent’s active record approach feels limiting.AtlasRecordRepository vs. EloquentRepository).// Existing Eloquent
$user = User::find(1);
// New Atlas Record
$userRecord = UserRecord::findOneById(1);
$user = new User($userRecord->toArray());
Cache::remember). Would need custom implementation.composer require atlas/orm
config/database.php (if using custom DSN).app/Models/Atlas/UserRecord.php).use Atlas\Orm\Record;
class UserRecord extends Record
{
protected $table = 'users';
protected $primaryKey = 'id';
protected $fillable = ['name', 'email'];
}
$this->app->singleton('atlas.connection', function ($app) {
return new Atlas\Orm\Connection\Connection(
$app['db']->connection('mysql')->getPdo()
);
});
class UserRepository
{
public function findById(int $id): ?UserRecord
{
return UserRecord::findOneById($id);
}
}
| Risk | Impact | Mitigation |
|---|---|---|
| Package Abandonment | Broken dependencies, security risks. | Fork or migrate to alternative (e.g., Doctrine). |
| Performance Bottlenecks | Slow queries due to manual mapping. | Benchmark; use Laravel caching for records. |
| Integration Gaps | Missing Laravel features (events, caching). | Build wrappers or hybrid repositories. |
| Developer Adoption | Resistance to new paradigm. | Training, code reviews, gradual rollout. |
How can I help you explore Laravel packages today?