pursehouse/modeler-laravel-eloquent
Installation:
composer require pursehouse/modeler-laravel-eloquent
(Note: The README mentions a VCS repo, but standard Packagist installation works for the latest stable version.)
Register Provider:
Add to config/app.php:
'providers' => [
Pursehouse\Modeler\Coders\CodersServiceProvider::class,
],
Publish Config (if needed):
php artisan vendor:publish --provider="Pursehouse\Modeler\Coders\CodersServiceProvider"
First Use Case: Generate a model from a migration:
php artisan modeler:generate ModelName --migration=MigrationName
(Check php artisan modeler:help for available commands.)
php artisan modeler:list to see available generators.config/modeler.php (published via vendor:publish) for customization.app/Models/ (configurable).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
Custom Field Mapping:
Override default field mappings in config/modeler.php:
'field_mappings' => [
'string' => 'text',
'integer' => 'int',
'timestamp' => 'dateTime',
],
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.)
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
Outdated Package:
hasManyThrough).Foreign Key Assumptions:
user_id → belongsTo).Config Overrides:
config/modeler.php require cache clearing:
php artisan config:clear
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.
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';
}
}
Hooks:
Use modeler.generated event to post-process models:
// EventServiceProvider
protected $listen = [
'modeler.generated' => [
'App\Listeners\PostModelGeneration',
],
];
Field Filters: Exclude fields from generation in config:
'ignored_fields' => ['password', 'remember_token'],
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
How can I help you explore Laravel packages today?