roberts/support

Common functions used in Laravel packages
2,628
Install
composer require roberts/support
Latest Version:v2.0.0
PHP:^8.5
Laravel:13
Older releases:12
License:MIT
Last Updated:Jun 22, 2026
Links: GitHub  ·  Packagist
Maintainer: drewroberts

Common functions used in Laravel packages

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Traits, Helper functions, and scaffolding tools for Laravel packages & applications.

🚀 Quick Start: Project Scaffolding

Quickly set up GitHub Workflow, Actions and Docker:

composer require roberts/support
composer support:scaffold

This automatically generates:

  • ✅ GitHub Actions workflows (tests, PHPStan, linting)
  • ✅ Docker configuration for Cloud Run
  • ✅ PHPStan configuration
  • ✅ VS Code workspace settings

Scaffolding Documentation →

Features

Project Scaffolding

  • Auto-detect project type (Laravel app or package)
  • Smart detection of features (Flux, Filament, Twitter, Mail)
  • One command to set up complete CI/CD pipeline
  • Google Cloud Run deployment ready

Model Traits

  • HasCreator
  • HasUpdater

Model Traits for Status

  • HasActiveStatus
  • HasApplicationStatus
  • HasApprovalStatus
  • HasModeratorStatus
  • HasOrderStatus
  • HasProcessingStatus
  • HasPublishingStatus
  • HasSubscriptionStatus

Installation

You can install the package via composer:

composer require roberts/support

Usage

On packages or Laravel applications that require this package, you can add the Traits to models like:

use HasCreator, HasUpdater, HasPublishingStatus;

You may only add 1 of the Status Traits since they all use the same status database column. They are not designed to work together but to replace the functionality with the Enum structures.

Expected Columns

When using any of the Status Traits on a model, add the following format for the status database column on your table:

  • status (string (25 character max), nullable, index)

Note: Status traits automatically set appropriate default values when models are created (e.g., pending for moderator status, active for active status).

When using the HasCreator and/or HasUpdater traits on a model, add the following nullable columns to your table:

  • creator_id (unsignedBigInteger, nullable)
  • updater_id (unsignedBigInteger, nullable)

Example migration snippet:

Schema::table('your_table', function (Blueprint $table) {
	$table->string('status', 25)->nullable()->index();

	$table->foreignId('creator_id')->nullable()->constrained('users');
	$table->foreignId('updater_id')->nullable()->constrained('users');
});

The traits automatically:

  • Set creator_id on model creating (when an authenticated user is present).
  • Set updater_id on model saving (create and update) when an authenticated user is present.

Overriding the Auth Provider Model

By default, the creator & updater traits resolve the related user model from config('auth.providers.users.model'). If your application uses a different provider or model, ensure the config points to your user class. For example, in config/auth.php:

'providers' => [
	'users' => [
		'driver' => 'eloquent',
		'model' => App\Models\User::class,
	],
],

Or override at runtime (e.g., inside a service provider) if needed:

config(['auth.providers.users.model' => App\Domain\Auth\User::class]);

Enums

Status traits use enums with the following values, setting the first one on model creation:

  • HasActiveStatus: active, inactive
  • HasApplicationStatus: pending, started, verified, applied, accepted, rejected
  • HasApprovalStatus: pending, submitted, approved, rejected
  • HasModeratorStatus: pending, flagged, approved, rejected
  • HasOrderStatus: cart, pending, checkout, paid, shipped, delivered, canceled
  • HasProcessingStatus: pending, processing, completed, failed
  • HasPublishingStatus: draft, scheduled, published, archived
  • HasSubscriptionStatus: trial, active, canceled, expired

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

Related Packages

arcanedev/support

ARCANEDEV Support Helpers

8,785,083 188
cartalyst/support

Support helpers.

2,988,624 75
mpclarkson/freshdesk-laravel

Laravel package for the Freshdesk API (v2)

68,264 17
larapack/doctrine-support

Better Doctrine Support with Laravel (Support for `enum`)

2,413,007 175
taskforcedev/laravel-support

Laravel support package. Used by other Taskforcedev packages.

9,494 1

Version History

Version Released PHP Laravel License
v2.0.0 ^8.5 ^13.0 MIT
v1.0.0 ^8.4 ^12.26 MIT