Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Eloquent Rankable Laravel Package

rtablada/eloquent-rankable

A lightweight Laravel trait that adds sortable rank to Eloquent models. Keep an order in a rank column, move records up or down, and fetch ranked lists without writing custom SQL. Simple trait-based setup for menus, galleries, and any admin-sorted content, with no complex configuration.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Feature scoping for "ordered collections." Any surface where users expect to control sequence — CMS content ordering, menu/nav items, prioritized backlogs, playlist/track order, tiered or ranked lists, leaderboard snapshots. This package is the backend primitive that decides whether that feature is a one-sprint item or a multi-sprint one.
  • Build vs. buy on a deceptively small problem. "Give a model a position and let users move it" looks like a 20-line trait and is actually a data-integrity problem (gaps, duplicates, concurrent reorders, scoped lists, reindex cost). The assessment here is whether to adopt a dependency, vendor a snippet, or own the logic — this package is small enough (31 stars, 0 dependents) that it functions more as a reference implementation than a dependency, which is itself the decision.
  • Data model commitment. Rank-based ordering implies an integer rank/position column with reindex-on-insert semantics. That choice has downstream product consequences: how cheap drag-and-drop is, how well it survives concurrent edits, and whether "move to top" is O(1) or O(n). Making this call early avoids a painful migration later.
  • Roadmap sequencing for reordering UX. If drag-and-drop reordering is on the roadmap, this is the dependency that gates it. If it isn't, the package is irrelevant and should be skipped — don't adopt infrastructure for a feature nobody has committed to.
  • Risk register entry, not a line item. With near-zero adoption and no maintainer signal, the real PM decision is "do we accept an unmaintained dependency for a core interaction?" — answerable only alongside how central ordering is to the product.

When to Consider This Package

Adopt (or, more realistically, vendor) it when:

  • You're building an MVP or internal tool where ordered lists are a convenience, not a headline feature.
  • You have a single ordering scope per model — one flat list, one tenant, no per-user custom ordering.
  • Write volume is low — reordering is an occasional admin action, not a high-frequency user interaction.
  • The team is Laravel-native and pinning/vendoring a small trait is a familiar, low-ceremony move.
  • You need something working this week and are willing to treat the code as a starting point you'll harden.

Look elsewhere — or write it in-house — when:

  • Concurrency matters. Two admins reordering the same list is the classic failure mode; a thin trait typically doesn't handle it, and neither will you for free.
  • Lists are large or churn often. Integer ranks with reindexing degrade predictably; fractional indexing (LexoRank-style) or a maintained sortable package is the better long-term answer.
  • You need per-user or multi-scope ordering (each customer orders their own dashboard), audit history of moves, or tie-breaking rules.
  • Support and upgrades are a requirement. 31 stars, 0 dependents, and a low health score mean no community backstop and no guarantee of Laravel-version compatibility. Treat it as unmaintained until proven otherwise.
  • A maintained alternative exists. The spatie/laravel-sortable-style packages in this space have real user bases; if you're taking a dependency anyway, take one with a pulse.

How to Pitch It (Stakeholders)

To executives: This is a small, low-risk input to a feature decision, not a strategic bet. Ordered lists are a recurring product need across several surfaces, and the choice is between a one-to-two-day build, adopting a lightweight existing implementation, or a full sprint on a hardened sorting service. Recommendation: prototype with the existing implementation to validate the UX, then decide whether to own it — the cost of switching later is low because the logic is small. Do not frame this as a dependency we're standardizing on; it has essentially no adoption and no maintainer safety net.

To engineering: Treat rtablada/eloquent-rankable as a readable reference for rank/position management on Eloquent models, not as infrastructure. If we adopt it, vendor the trait into our codebase, pin it, and add tests for the cases it likely doesn't cover: concurrent reorders, duplicate ranks, scoped lists, and bulk inserts shifting positions. Budget the hardening explicitly — the package saves us the blank-page problem, not the correctness problem. If ordering becomes central to the product, plan the migration to fractional indexing before the list sizes make integer reindexing painful.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo
stevenay/myanfont
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin