muzammal / syncmodelfillable
A Laravel package to synchronize model fillable fields with migration columns using commands
Installs: 62
Dependents: 0
Suggesters: 0
Security: 0
Stars: 12
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/muzammal/syncmodelfillable
Requires
- php: >=7.4
- illuminate/console: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/filesystem: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0|^9.0
This package is auto-updated.
Last update: 2025-11-20 14:31:05 UTC
README
SyncModelFillable is a Laravel package designed to help automatically add or update a model's $fillable fields with its database migration columns. ๐ With just a simple Artisan command.
โจ Features
- ๐ ๏ธ Syncs model
$fillableproperties with migration columns. - ๐ฆ Supports Laravel versions 8, 9, 10, 11, and 12.
- โ๏ธ Customizable to exclude specific columns, like timestamps.
- ๐ New:
- The
allflag now recursively scans all subdirectories insideapp/Models/. - The
--path=option allows selecting a custom directory for scanning models. - The
--ignoreflag lets you exclude specific models during sync. - ๐งน Cross-platform Pint support: Automatically formats the model file after updating the
$fillablefields, ensuring proper code formatting on all operating systems (Windows, macOS, Linux).
- The
๐ Installation
-
Install the package via Composer:
composer require muzammal/syncmodelfillable
-
(Optional) Publish the configuration file:
php artisan vendor:publish --tag=syncmodelfillable-config
This will create a
config/syncfillable.phpfile where you can specify columns to exclude (such ascreated_at,updated_at,deleted_at, etc.).
๐ Usage
This package provides an Artisan command sync:fillable to sync a model's $fillable fields with its database migration columns.
๐น Sync a Specific Model
To sync the $fillable fields of a specific model inside app/Models/, including nested folders run this:
php artisan sync:fillable Post
๐น Sync All Models (Including Nested Folders)
To sync all models inside app/Models/, including nested folders:
php artisan sync:fillable all
This will:
- Scan all subdirectories inside
app/Models/(e.g.,app/Models/Fintech/AnotherFolder/AnotherFolder). - Match each model with its migration file.
- generate the
$fillableproperties accordingly.
๐น New: Custom Path for Models
You can specify a custom path instead of using app/Models/ by using the --path= option.
php artisan sync:fillable --path=app/CustomModels
This will:
- Scan app/CustomModels/ instead of
app/Models/. - Sync all models found in that directory.
๐น New: Exclude Models with the --ignore Flag
To exclude specific models from the sync operation:
php artisan sync:fillable all --ignore=User
You can also pass multiple models:
php artisan sync:fillable all --ignore=User,Product,Order
If syncing a single model, the --ignore flag is not applicable:
php artisan sync:fillable Product
โ๏ธ Configuration
The configuration file syncfillable.php allows you to exclude certain columns from $fillable. By default, common timestamp columns (created_at, updated_at, deleted_at) are excluded.
Example configuration:
return [ 'excluded_columns' => ['created_at', 'updated_at', 'deleted_at'], ];
๐งน Cross-Platform Support for Pint
After updating the $fillable fields, the model file will be automatically formatted using Pint. This ensures that your code is properly formatted on all operating systems, including Windows, macOS, and Linux.
- On Windows, Pint is run via
vendor\\bin\\pint.bat. - On macOS/Linux, Pint is executed with
./vendor/bin/pint.
This ensures your code maintains consistency and adheres to best practices without requiring manual formatting. โจ
๐ Example
If your Post model has a migration defining name, slug, and content columns, running:
php artisan sync:fillable Post
Would automatically generate $fillable in Post.php
protected $fillable = ['name', 'slug', 'content'];
Additionally, after updating the $fillable fields, the Post.php file will be formatted to ensure clean code.
๐ License
This package is open-source software licensed under the MIT license.