Download the PHP package wink/wink-model-generator without Composer
On this page you can find all versions of the php package wink/wink-model-generator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package wink-model-generator
Laravel Model Generator
A focused Laravel package that automatically generates Eloquent models and factories from your existing database schema. For API Resource and Controller generation, check out our companion package wink-resource-generator.
Features
- Supports MySQL, PostgreSQL, and SQLite databases (including in-memory SQLite for testing)
- Generates complete model files with proper namespacing and comprehensive Laravel model properties
- Smart property detection: auto-detects primary keys, key types, incrementing, soft deletes
- Enhanced security: automatically hides sensitive fields (passwords, tokens, etc.)
- Flexible mass assignment: configurable
$fillable
vs$guarded
approaches - Complete property support:
$hidden
,$visible
,$attributes
,$with
,$perPage
, etc. - Auto-detects relationships from foreign keys
- Configurable model generation options via comprehensive config file
- Generates PHPDoc properties for better IDE support
- Includes validation rules based on schema
- Handles custom database connections
- Optional model factory generation with automatic exclusion of auto-incremented fields
- Optional model observer generation
- Connection-based directory structure for multi-database projects
- PSR-4 namespace validation and auto-correction
- Compatible with PHP 8.3+ and Laravel 11+
Installation
You can install the package via composer:
Related Packages
- wink-resource-generator - Generate API Resources, Controllers, and Routes for your Laravel models
Configuration
You can publish the configuration file with:
This will create a config/model-generator.php
file with comprehensive configuration options:
Model Property Generation
The package now automatically generates comprehensive Laravel model properties based on your database schema:
Smart Detection:
- Primary Keys: Auto-detects from schema instead of hardcoding 'id'
- Key Types: Sets
$keyType
to 'string' for UUID/varchar keys, 'int' for integers - Incrementing: Sets
$incrementing = false
for UUID/string primary keys - Soft Deletes: Detects
deleted_at
columns and adds SoftDeletes trait - Timestamps: Detects
created_at
/updated_at
columns
Security & Visibility:
- Hidden Fields: Automatically hides sensitive fields matching patterns (password, token, secret, etc.)
- Visible Fields: Option to use
$visible
instead of$hidden
Mass Assignment:
- Fillable vs Guarded: Choose between
$fillable
and$guarded
approaches - Smart Exclusions: Automatically excludes primary keys and timestamps from fillable
Advanced Properties:
- Default Attributes: Generates
$attributes
array from schema default values - Pagination: Configure custom
$perPage
values - Eager Loading: Auto-generate
$with
for common relationships - Date Formatting: Customize
$dateFormat
Usage
The package provides two main commands for generating models and factories.
Model Generation
Generate Eloquent models from your database schema:
Factory Generation
When generating factories with --with-factories
, the package intelligently creates Laravel factories with:
Smart Field Exclusion:
- Auto-incremented fields: Automatically detects and excludes auto-incremented primary keys
- Timestamp fields: Excludes
created_at
,updated_at
, anddeleted_at
fields - Database-specific detection: Works across MySQL (via
auto_increment
), PostgreSQL (via sequences/identity), and SQLite (viaINTEGER PRIMARY KEY
)
Generated Factory Features:
- Business-oriented state methods (
active()
,inactive()
,pending()
,archived()
) - Test scenario helpers (
forTesting()
,forDemo()
,forDevelopment()
) - Relationship helpers (
withUser()
,withBusinessMetadata()
) - Business constraint methods for realistic data generation
- Smart faker method selection based on column names and types
Directory Structure
By default, the package organizes generated model files into a GeneratedModels/{connection_name}
subdirectory. This subdirectory is created within the path defined by the model_path
configuration option (which defaults to app/Models
, resulting in a final default path like app/Models/GeneratedModels/mysql
). A similar structure is used for factories based on the factory_path
configuration.
The typical default directory structure looks like this:
The --directory
command-line option allows you to specify a custom output directory for models, completely overriding the default {model_path}/GeneratedModels/{connection_name}
structure. Similarly, the --factory-directory
and --observer-directory
options override the defaults for factories and observers. These options accept either absolute paths or paths relative to the project root.
If the relevant directory options are not specified, the defaults are:
- Models:
{model_path}/GeneratedModels/{connection_name}
(e.g.,app/Models/GeneratedModels/mysql
using the defaultmodel_path
) - Factories:
{factory_path}/GeneratedFactories/{connection_name}
(e.g.,database/factories/GeneratedFactories/mysql
using the defaultfactory_path
) - Observers:
{observer_path}/GeneratedObservers/{connection_name}
(e.g.,app/Observers/GeneratedObservers/mysql
using the defaultobserver_path
)
Recent Improvements
Version 1.1.0
- PostgreSQL Support: Added full support for PostgreSQL databases with auto-increment detection
- Improved Directory Handling: Fixed path resolution for relative and absolute directory options
- Enhanced Help Documentation: Added comprehensive examples and clearer path requirements
- Smart Factory Generation: Factories now automatically exclude auto-incremented fields
- Better Error Messages: More helpful error messages for directory permission issues
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of wink-model-generator with dependencies
illuminate/support Version ^11.0
illuminate/console Version ^11.0
illuminate/database Version ^11.0
spatie/laravel-package-tools Version ^1.0