Intuitive productivity tool for Laravel. demo
You no longer need to write migrations, Doctrine will do it for you.
PhpStorm plugin Laravel Builder
PhpStorm plugin Laravel Generator
- design database schemas
- manage database migrations
- generate OpenApi document
- generate CRUD files
composer require --dev googee/laravel-builder
php artisan vendor:publish --provider="GooGee\LaravelBuilder\LaravelBuilderServiceProvider"
php artisan setupLaravelBuilder 'user' => [
'driver' => 'daily',
'path' => storage_path('logs/user.log'),
'level' => env('LOG_LEVEL', 'debug'),
],- go to
Migrationpage, then select theUserin sidebar - click
▼button to generate theEntityfile - click
diffbutton to generate a migration file - click
►|button to runphp artisan migrate - to ignore a table, add its name to the file
config/laravelbuilder.php
Doctrine compares files in database/Entity with the database schemas, and generate a migration file of their difference.
- go to
Entitypage, then selectUserin sidebar - select
Filetab, then click▼button to generate the file
- click
OpenApiin the menu bar - click
toJSONbutton, then copy the text - click
editorlink, then paste in the editor
for example, lets generate the User Entity file.
when ▼ button is clicked, this plugin will do the following:
- GUI fetch all files in
laravel-builder/code - execute code in
code-helper.js - execute code in
file-1.js(1is the id ofEntity) - render template
file-1.txt - write the result text to
database/Entity/User.php
- go to
Treepage, then select a file in sidebar - click
editscript button to modify the code (optional) - click
edittemplate button to modify the text - go to
Entitypage, then selectUserin sidebar - select
Filetab, then click▼button to generate the file
Note: if changes didn't work, make sure to save the changed file manually, PhpStorm doesn't save the changed file immediately.
for example
function run(data) {
/** @type {DataForScript} */
const ddd = data
// define variable `model`
ddd.model = ddd.db.tables.File.find(item => item.name === 'Model')
// define function `toString`
ddd.toString = function(object) {
return JSON.stringify(object)
}
}in template
{{ model.name }}
{{ toString(model) }}
