Weave Code
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 Schema Rules Laravel Package

laracraft-tech/laravel-schema-rules

Generate starter Laravel validation rules from your database schema. Create rules for entire tables or selected columns, optionally generate Form Request classes, and configure columns to always skip. Great for fast scaffolding before manual refinement.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Steps

  1. Installation:

    composer require laracraft-tech/laravel-schema-rules --dev
    php artisan vendor:publish --tag="schema-rules-config"
    
  2. First Use Case: Generate validation rules for a table (e.g., users) directly in your terminal:

    php artisan schema:generate-rules users
    

    Copy-paste the output into your FormRequest or controller validation logic.


Where to Look First

  • Config File: config/schema-rules.php (customize skip_columns, e.g., ['deleted_at', 'updated_at']).
  • Artisan Command: php artisan schema:generate-rules --help for all flags (e.g., --columns, --create-request).
  • Web Demo: validationforlaravel.com for interactive testing.

Implementation Patterns

Workflows

  1. Rapid Prototyping: Use --create-request to auto-generate a FormRequest class:

    php artisan schema:generate-rules posts --create-request --file StorePostRequest
    

    Output: app/Http/Requests/StorePostRequest.php with pre-filled rules.

  2. Partial Validation: Generate rules for specific columns (e.g., title, content):

    php artisan schema:generate-rules posts --columns title,content
    
  3. Integration with Existing Code:

    • FormRequests: Replace manual rules() with generated rules (e.g., $this->rules = [...]).
    • Controllers: Use the output as a template for Validator::make($data, $rules).
    • API Resources: Validate nested data by generating rules for related tables (e.g., comments for a post).
  4. CI/CD Pipeline: Add a script to auto-generate rules during deployment:

    php artisan schema:generate-rules users --create-request --force
    

Integration Tips

  • Customize Rules: Extend the generated rules in your FormRequest:

    public function rules()
    {
        $rules = parent::rules(); // If using a base class
        $rules['email'][] = 'unique:users'; // Add custom rules
        return $rules;
    }
    
  • Foreign Key Validation: The package auto-generates exists:table,column rules for foreign keys (e.g., user_idexists:users,id).

  • Nullable Fields: Fields marked as nullable() in migrations get nullable in the rules (e.g., bio['nullable', 'string']).

  • Enum/Boolean Handling: Enums generate in:value1,value2 rules, while booleans use boolean.


Gotchas and Tips

Pitfalls

  1. Floating-Point Precision:

    • Issue: float columns generate numeric rules (no precision constraints).
    • Fix: Manually add digits:X,decimals:Y or use decimal columns instead.
  2. Driver-Specific Quirks:

    • MySQL: Uses max:255 for string columns (adjust if using TEXT).
    • PostgreSQL: May require jsonb support for complex types (test with php artisan schema:generate-rules --columns json_column).
    • SQLite: Min/max lengths may differ from MySQL/PostgreSQL.
  3. Config Overrides:

    • Issue: skip_columns in config may not apply if using --columns.
    • Fix: Explicitly list columns to override config:
      php artisan schema:generate-rules users --columns name,email --skip-columns deleted_at
      
  4. FormRequest Naming Conflicts:

    • Issue: --create-request may overwrite existing files.
    • Fix: Use --file to specify a custom path or --force to overwrite.

Debugging

  • Verify Schema: Run php artisan schema:generate-rules users --columns all to debug column mappings. Compare output with your migration file.

  • Check Database Connection: Ensure your .env DB settings match the schema (e.g., DB_CONNECTION=mysql).

  • Log Generated Rules: Redirect output to a file for review:

    php artisan schema:generate-rules users > rules.txt
    

Extension Points

  1. Custom Rule Mappings: Override default rules by extending the package:

    // app/Providers/AppServiceProvider.php
    use LaracraftTech\SchemaRules\RuleGenerator;
    
    public function boot()
    {
        RuleGenerator::macro('customRule', function ($column) {
            return ['custom' => 'validation'];
        });
    }
    
  2. Add New Drivers: Extend the DatabaseSchema class to support unsupported drivers (e.g., SQL Server).

  3. Post-Generation Hooks: Use Laravel events to modify rules after generation:

    // config/schema-rules.php
    'post_generate_hook' => App\Services\RuleModifier::class,
    

Pro Tips

  • Combine with Laravel IDE Helper: Generate rules during development, then use barryvdh/laravel-ide-helper to auto-complete validation rules in your IDE.

  • Version Control: Commit generated FormRequest files to enforce consistency across environments.

  • Testing: Use the generated rules in PHPUnit tests:

    $validator = Validator::make($data, $this->rules());
    $validator->validate();
    
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport