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

Laravel Pgarray Laravel Package

andreacolzani/laravel-pgarray

A Laravel package for working with PostgreSQL array columns in Eloquent models, making it easier to store, retrieve, and query array-based data without custom casting boilerplate.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Schema design for Laravel apps on PostgreSQL: laravel-pgarray is a narrow, infrastructure-level package that lets teams use native Postgres array columns (e.g. text[], int[], uuid[]) with first-class Eloquent casting and query support instead of serialising to JSON or spinning up a junction table. That makes it a direct input to the "JSON column vs. array column vs. join table" decision on any roadmap item involving tag lists, feature flags, recipient ID sets, or ordered preference lists.
  • Build vs. buy: The alternative is a few hundred lines of custom cast + query-builder macros maintained in-house. This package replaces that with a small dependency, so the buy decision is easy if the stack is Postgres-only — the cost is a third-party dependency on a core data path rather than a peripheral feature.
  • Feature scoping and delivery risk: Array columns let you ship "multi-select" style features (labels, categories, saved filters, audience targeting) in a single migration rather than a schema expansion plus join-table plumbing. This typically compresses scoping for 1–2 sprints of work into configuration, which is a lever for roadmap sequencing when the team is capacity-constrained.
  • Use-case fit: Strong for read-mostly, low-cardinality, non-relational lists that are almost always fetched with their parent row. Weak for anything requiring referential integrity, cross-entity reporting, or "find all parents containing X" as a primary access pattern.
  • Version posture: 1.0.1 is a documentation-only patch (correcting the config publish tag from laravel-pgarray-config to pgarray-config). No API, behaviour, or migration changes, and no action required for anyone already on 1.0.0. It neither unblocks nor blocks any product decision — it is a signal about maintainer responsiveness, not capability.

When to Consider This Package

Adopt when all of the following hold:

  • The application is committed to PostgreSQL in every environment you care about (production, CI, local dev). This package's value proposition does not survive a mixed-database or SQLite-in-tests story, and a PM should treat "we might support MySQL later" as a disqualifier.
  • The data is genuinely array-shaped: ordered or unordered small lists that belong to one parent row and are read with it, not joined against or aggregated across.
  • You are already comfortable with Postgres-specific features (JSONB, GIN indexes, ANY() operators). If the team is not, arrays become a debugging tax rather than an accelerator.
  • The dependency footprint matters more than the marginal control of a bespoke cast. For a single column type, an in-house cast of ~150 lines may be a better trade than a 1.x dependency on a core data path.

Look elsewhere (junction table, JSON column, or a dedicated tagging package) when:

  • You need foreign keys, cascading deletes, or uniqueness enforcement across the list members — arrays cannot provide referential integrity, and retrofitting a join table later is a data migration plus a rewrite of every query touching that column.
  • Array membership is a primary query predicate at scale. GIN indexes help, but an indexed junction table usually wins for reporting and analytics.
  • The product may need multi-database support, read replicas on a different engine, or a warehouse that ingests the schema directly.
  • Vendor-maturity gate: 1.0.0 shipped with an incorrect publish tag in its own README, and 1.0.1 fixed only the documentation. That is a harmless bug, but it is evidence of thin release QA on a package that would sit on your schema and ORM layer. If your team cannot read the source and self-support, wait for a 1.1 or a couple more releases with behavioural change handled cleanly.

How to Pitch It (Stakeholders)

To executives: This is a small, free dependency that lets us model list-shaped data (tags, categories, audience IDs) natively in our database, which shortens delivery on a recurring class of features and removes a custom component we would otherwise own and maintain. It carries a scoped, well-understood risk: it locks that part of our schema to PostgreSQL, which matches our existing platform commitment. Recommendation is to trial it on one low-risk feature rather than standardise on it.

To engineering: laravel-pgarray gives us Eloquent casts and query helpers for Postgres array columns, replacing hand-rolled casts. Version 1.0.1 is a docs-only patch correcting the config publish tag to pgarray-config — no code changes, nothing to migrate. Ask: confirm no MySQL/SQLite requirement on the target tables, and confirm the team is willing to own this dependency (read the source, track upstream) rather than vendoring a cast. If the answer to either is no, we use a junction table and the decision costs us nothing.

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.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib