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
Migration
page, then select theUser
in sidebar - click
▼
button to generate theEntity
file - click
diff
button 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
Entity
page, then selectUser
in sidebar - select
File
tab, then click▼
button to generate the file
- click
OpenApi
in the menu bar - click
toJSON
button, then copy the text - click
editor
link, 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
(1
is the id ofEntity
) - render template
file-1.txt
- write the result text to
database/Entity/User.php
- go to
Tree
page, then select a file in sidebar - click
edit
script button to modify the code (optional) - click
edit
template button to modify the text - go to
Entity
page, then selectUser
in sidebar - select
File
tab, 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) }}