Download the PHP package grazulex/laravel-modelschema without Composer
On this page you can find all versions of the php package grazulex/laravel-modelschema. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download grazulex/laravel-modelschema
More information about grazulex/laravel-modelschema
Files in grazulex/laravel-modelschema
Package laravel-modelschema
Short Description Generate and manage Laravel model schemas with automatic validation, documentation, and migration helpers for better data structure management.
License MIT
Homepage https://github.com/grazulex/laravel-modelschema
Informations about the package laravel-modelschema
Laravel ModelSchema
A foundational Laravel package for schema-driven development. Parse YAML schemas, generate insertable fragments for models, migrations, requests, resources, factories, seeders, controllers, tests, policies, observers, services, actions, and validation rules. Built to power Laravel TurboMaker, Arc, and other schema-based packages.
[
- ๐ Migration Guide - Upgrading from previous versions
- ๐ Fragment Examples - Understanding generated fragmentsocs/FIELD_TYPES.md)** - Complete field types reference
- ๐ Field Type Plugins - Creating custom field type plugins
- โจ Custom Attributes Examples - Practical examples of custom attributes usage
- โ
https://packagist.org/packages/grazulex/laravel-modelschema)
Overview
Laravel ModelSchema provides schema parsing, validation, and fragment generation for Laravel applications. Instead of generating complete files, it produces insertable JSON/YAML fragments that parent applications can integrate into their own generation workflows.
๐ฏ Core Purpose: Enable schema-driven development with clean separation between core schema logic and application-specific generation.
๐ Key Features
- ๐ Schema Parsing & Validation - Parse YAML schemas with core/extension separation
- ๐งฉ Fragment Generation - Generate insertable JSON/YAML fragments for Laravel artifacts
- ๐๏ธ Clean Architecture - Separate core schema responsibilities from app-specific generation
- ๐ Multi-Generator Support - Models, Migrations, Requests, Resources, Factories, Seeders, Controllers, Tests, Policies, Observers, Services, Actions, Rules
- ๐ Schema Analysis - Advanced schema comparison, optimization, and performance analysis
- ๐ Plugin System - Extensible field type plugins for custom functionality
- ๐ Integration API - Complete workflow for external packages (TurboMaker, Arc, etc.)
- โจ Extensible Design - Custom field types, generators, and validation rules
๏ฟฝ Installation
๐๏ธ Architecture
Core Services
SchemaService- Main API for parsing, validation, and core/extension separationGenerationService- Coordinates all generators to produce insertable fragmentsYamlOptimizationService- Advanced YAML parsing with lazy loading, streaming, and intelligent cachingSchemaDiffService- Advanced schema comparison and difference analysisSchemaOptimizationService- Performance analysis and optimization recommendations- 13 Specialized Generators - Model, Migration, Request, Resource, Factory, Seeder, Controller, Test, Policy, Observer, Service, Action, Rule
FieldTypePluginManager- Manages extensible field type plugins for custom functionality
Schema Structure
The package uses a "core" structure to clearly separate core schema data from application extensions:
๐ Quick Start
1. Basic Schema Parsing
2. Complete Integration Workflow
3. Fragment-Based Generation
๐๏ธ Available Generators
Laravel ModelSchema provides 13 specialized generators, each producing insertable JSON/YAML fragments:
Core Laravel Components
| Generator | Description | Output Fragment |
|---|---|---|
| Model | Eloquent model with relationships, casts, and configurations | model: {class_name, table, fields, relations, casts, ...} |
| Migration | Database migration with fields, indexes, and foreign keys | migration: {table, fields, indexes, foreign_keys, ...} |
| Request | Form Request classes for validation (Store/Update) | requests: {store: {...}, update: {...}} |
| Resource | API Resource classes for data transformation | resources: {main_resource: {...}, collection_resource: {...}} |
| Factory | Model Factory for testing and seeding | factory: {class_name, definition, states, ...} |
| Seeder | Database Seeder for data population | seeder: {class_name, model, count, relationships, ...} |
Advanced Components
| Generator | Description | Output Fragment |
|---|---|---|
| Controller | API and Web Controllers with CRUD operations | controllers: {api_controller: {...}, web_controller: {...}} |
| Test | PHPUnit test classes (Feature and Unit) | tests: {feature_tests: [...], unit_tests: [...]} |
| Policy | Authorization Policy classes | policies: {class_name, methods, gates, ...} |
Business Logic Components (New in v2.0)
| Generator | Description | Output Fragment |
|---|---|---|
| Observer | Eloquent Observer with model event handlers | observers: {class_name, events, methods, ...} |
| Service | Business logic Service classes with CRUD operations | services: {class_name, methods, dependencies, ...} |
| Action | Single-responsibility Action classes | actions: {crud_actions: [...], business_actions: [...]} |
| Rule | Custom Validation Rule classes | rules: {business_rules: [...], foreign_key_rules: [...]} |
Usage Examples
๐ง API Reference
SchemaService
| Method | Description | Returns |
|---|---|---|
parseAndSeparateSchema() |
Parse YAML and separate core/extensions | ['core' => array, 'extensions' => array] |
validateCoreSchema() |
Validate only core schema section | array (errors) |
extractCoreContentForGeneration() |
Extract structured core data | array |
generateCompleteYamlFromStub() |
Generate complete YAML from stub | string |
getGenerationDataFromCompleteYaml() |
Extract all generation fragments | array |
GenerationService
| Method | Description | Returns |
|---|---|---|
generateAll() |
Generate all fragments for schema | array |
generateSingle() |
Generate single generator fragment | array |
getAvailableGenerators() |
List available generators | array |
๐ Trait-Based Field Type Plugin System
Laravel ModelSchema features an extensible plugin system using a trait-based architecture for custom field types. This modern approach provides powerful customization through traits and configuration objects.
Plugin Manager
Creating Custom Plugins with Traits
The new trait-based approach allows you to define field options through configuration arrays rather than hardcoded properties:
Trait-Based Custom Attributes System
The trait-based plugin system supports sophisticated custom attributes through configuration objects:
- Type validation traits:
string,int,boolean,array, etc. - Constraint traits:
min,max,required,enumvalues - Default value traits: Automatically applied if not provided
- Custom validator traits: Callback functions for complex validation logic
- Transformation traits: Custom value transformation before storage
- Integration traits: Seamlessly merged with Laravel's standard attributes
Advanced Trait Examples
๐ See Field Type Plugins Documentation for complete trait-based implementation guide.
๐ Example Schema Files
Basic User Schema
Blog Post Schema with Relations
๏ฟฝ Integration with Parent Applications
This package is designed to be consumed by larger Laravel packages like TurboMaker and Arc. Here's the typical integration pattern:
Parent Application Workflow
Fragment Structure
Each generator produces insertable fragments with this structure:
The parent application receives these fragments and inserts them into its own generation templates.
๐งช Testing
๐ง Requirements
- PHP: ^8.3
- Laravel: ^12.19 (optional, used in service provider)
- Symfony YAML: ^7.3 (for YAML parsing)
๐ Documentation
Core Documentation
- ๐๏ธ Architecture Guide - Understanding the package structure and design
- ๏ฟฝ Migration Guide - Upgrading from previous versions
- ๐ Fragment Examples - Understanding generated fragments
Field Types & Extensions
- ๏ฟฝ Field Types Guide - Complete field types reference
- ๐ Field Type Plugins - Creating custom field type plugins
- โ Custom Field Validation - Validating custom field types
Advanced Features
- ๐ Logging System - Comprehensive logging and debugging
- โก Enhanced Features - Advanced capabilities overview
- ๏ฟฝ YAML Optimization - High-performance YAML parsing with intelligent caching and streaming
- ๏ฟฝ๐ Schema Optimization - Schema analysis and optimization tools
- ๐ Security Features - Comprehensive security validation and protection
Integration Examples
- ๐ Integration Example - Complete integration workflow
- โจ New Generators Example - Observer, Service, Action, Rule generators demo
- ๐ ๏ธ Schema Service API - API usage examples
- ๐ API Extensions - Extended API implementations
- ๐ YAML Optimization Examples - Performance optimization usage and examples
- โก Schema Optimization Usage - Advanced schema analysis examples
- ๐ Security Usage Examples - Security validation and protection examples
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
๐ Security
Please review our Security Policy for reporting vulnerabilities.
๐ License
Laravel ModelSchema is open-sourced software licensed under the MIT license.
Made with โค๏ธ by Jean-Marc Strauven (https://github.com/Grazulex)
All versions of laravel-modelschema with dependencies
illuminate/support Version ^12.0|^13.0
illuminate/contracts Version ^12.0|^13.0
nesbot/carbon Version ^3.10
symfony/yaml Version ^7.3