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

Modeler Laravel Eloquent Laravel Package

pursehouse/modeler-laravel-eloquent

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation:

    composer require pursehouse/modeler-laravel-eloquent
    

    (Note: The README mentions a VCS repo, but standard Packagist installation works for the latest stable version.)

  2. Register Provider: Add to config/app.php:

    'providers' => [
        Pursehouse\Modeler\Coders\CodersServiceProvider::class,
    ],
    
  3. Publish Config (if needed):

    php artisan vendor:publish --provider="Pursehouse\Modeler\Coders\CodersServiceProvider"
    
  4. First Use Case: Generate a model from a migration:

    php artisan modeler:generate ModelName --migration=MigrationName
    

    (Check php artisan modeler:help for available commands.)


Where to Look First

  • Command Reference: Run php artisan modeler:list to see available generators.
  • Config File: config/modeler.php (published via vendor:publish) for customization.
  • Generated Models: Default output is in app/Models/ (configurable).

Implementation Patterns

Core Workflow

  1. Migration-First Development: Write migrations first, then generate models:

    php artisan make:migration create_posts_table
    php artisan modeler:generate Post --migration=create_posts_table
    
  2. Custom Field Mapping: Override default field mappings in config/modeler.php:

    'field_mappings' => [
        'string' => 'text',
        'integer' => 'int',
        'timestamp' => 'dateTime',
    ],
    
  3. Relationship Handling: Use --with-relations flag to auto-detect relationships:

    php artisan modeler:generate User --with-relations
    

    (Generates belongsTo, hasMany, etc., based on foreign keys.)


Integration Tips

  • Seeding: Generate factories/seeds alongside models:

     php artisan modeler:generate Post --with-factory --with-seeder
    
  • API Resources: Pair with laravel/api-resources for auto-generated API responses:

     php artisan modeler:generate Post --with-resource
    
  • Testing: Use generated models in tests without manual setup:

    $post = new Post(); // Auto-generated with fillable fields
    
  • Custom Templates: Extend generators by publishing and overriding templates:

    php artisan vendor:publish --tag=modeler.templates
    

Gotchas and Tips

Pitfalls

  1. Outdated Package:

    • Last release was 2019. Test thoroughly in your Laravel version (5.1+).
    • May conflict with newer Eloquent features (e.g., hasManyThrough).
  2. Foreign Key Assumptions:

    • Auto-relationship detection assumes standard naming (user_idbelongsTo).
    • Custom foreign keys may require manual overrides.
  3. Config Overrides:

    • Changes to config/modeler.php require cache clearing:
      php artisan config:clear
      

Debugging

  • Verbose Output: Use -v flag for detailed generation logs:

    php artisan modeler:generate Post -v
    
  • Dry Run: Preview changes without writing files:

    php artisan modeler:generate Post --dry-run
    
  • Manual Template Debugging: Check vendor/pursehouse/modeler-laravel-eloquent/src/Resources/views/ for default templates.


Extension Points

  1. Custom Generators: Extend the base generator:

    // app/Generators/CustomModelGenerator.php
    namespace App\Generators;
    use Pursehouse\Modeler\Generators\ModelGenerator;
    
    class CustomModelGenerator extends ModelGenerator {
        protected function getStub() {
            return __DIR__.'/stubs/custom-model.stub';
        }
    }
    
  2. Hooks: Use modeler.generated event to post-process models:

    // EventServiceProvider
    protected $listen = [
        'modeler.generated' => [
            'App\Listeners\PostModelGeneration',
        ],
    ];
    
  3. Field Filters: Exclude fields from generation in config:

    'ignored_fields' => ['password', 'remember_token'],
    

Pro Tips

  • Laravel 8+ Compatibility: Add to composer.json to suppress warnings:

    "config": {
        "preferred-install": "dist",
        "sort-packages": true
    }
    
  • IDE Support: Regenerate models after schema changes to keep IDE hints accurate.

  • CI/CD: Use in CI to auto-generate models from migrations:

    # .github/workflows/generate-models.yml
    - run: php artisan modeler:generate User --with-factory
    
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.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope