romanzipp/laravel-console-list-columns
A small Laravel package that lets you list a database table's columns directly from the console, showing names, types, and attributes in a clean table. Handy for quickly inspecting schemas while debugging migrations or models.
Architecture fit
require-dev and never on a production autoload path.symfony/console, which Laravel already ships transitively. The package now has effectively zero dependencies outside the framework's own dependency tree — a genuine simplification of the integration surface.db:table / db:show commands (Laravel 10.30+/11), and as raw information_schema queries. Substitutability remains very high; the package is a convenience wrapper, not a capability.Integration feasibility
composer require --dev romanzipp/laravel-console-list-columns, package auto-discovery registers the provider, command appears in artisan list. No migrations, no config, no env vars.symfony/console constraint permit the 6.x line that Laravel 9/10/11 require?"Technical risk
phplucidframe/console-table eliminates the most likely conflict source — that library carried its own aged PHP constraint and was itself unmaintained. symfony/console is already pinned by the framework, so the package now aligns with an existing constraint rather than introducing a new one. Residual risk is any direct doctrine/dbal requirement, if the introspection path still uses it.information_schema, Postgres pg_catalog, SQLite PRAGMA, SQL Server). A renderer swap says nothing about introspection correctness across all four, and the team likely uses at least two (e.g. MySQL in prod, SQLite in tests).Key questions
symfony/console constraint resolve cleanly on our current LTS?doctrine/dbal, and at what major version? Does that conflict with anything already in our lockfile?php artisan db:table covers the same ground on Laravel 11+?Stack fit
db:table supersedes it) or teams with a strict "no unmaintained dev dependencies" policy — though the 1.2.2 release weakens the case for that policy blocking it.Migration path
db:table. The spike is now cheaper and lower-variance than previously assessed, because the riskiest transitive dependency is gone.Schema::getColumns() (Laravel 10.30+/11) or a per-driver information_schema query. That converts a low-activity external dependency into ~1 file of owned code with no DBAL constraint.symfony/console dependency the framework already guarantees.Compatibility
symfony/console constraint against our framework version — this is the one new thing 1.2.2 touches, and the one place it could still fail to install.require-dev boundary in CI — fail the build if the package appears in the production autoload graph.Sequencing
db:table.db:table. Default recommendation remains native-then-reimplement; fork only if the output format is materially better.Maintenance
Support
Scaling
information_schema scans. Per-table invocation avoids this.Failure modes
symfony/console constraint that misses our framework's line. Reduced probability after 1.2.2, still the highest-probability install-time failure; mitigated by the spike.information_schema visibility, yielding partial output without an error.Ramp-up
artisan list.db:table alternative so the tool doesn't outlive its usefulness.db:table.How can I help you explore Laravel packages today?