muzammal / syncmodelfillable
A Laravel package to synchronize model fillable fields with migration columns using commands
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-06-16 17:22:53 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
$fillable
properties with migration columns. - ๐ฆ Supports Laravel versions 8, 9, 10, 11, and 12.
- โ๏ธ Customizable to exclude specific columns, like timestamps.
- ๐ New:
- The
all
flag now recursively scans all subdirectories insideapp/Models/
. - The
--path=
option allows selecting a custom directory for scanning models. - The
--ignore
flag lets you exclude specific models during sync. - ๐งน Cross-platform Pint support: Automatically formats the model file after updating the
$fillable
fields, 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.php
file 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
$fillable
properties 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.