Eloquent


Eloquent Helper Code Generation


Eloquent is full of magic, so PhpStorm needs some helper code to understand it. There are 2 ways to do it:

  • barryvdh/laravel-ide-helper package can generate the needed phpDocs(ide-helper:models artisan command)
  • use our own Eloquent Helper code generation - it generates more powerful helper code.


Generate Eloquent Helper Code command is available in the Laravel main menu item.

{primary} It also can be called by quick key combination: Shift-Cmd(Ctrl)-.
Helper code will be generated without any dialog windows.


{primary} First call will ask you to configure the Eloquent helper code generation.

Later you can change those parameters at any time.
There is Helper Code Parameters... in the Laravel main menu item.



Fetch data from

Tables and columns can be fetched from migrations or existing database connection.

{primary} It's available to choose the both fetch types: from database and from migrations with the Also fetch migrations checkbox.
Migrations are fetching after connection and the fetched data from migrations will be added to the generated helper code as an addition.
It doesn't replace or remove anything.

Create collection proxy helper classes

Adds a helper code for supporting Collection proxies for all Eloquent models.


Add "*_count" properties for "*Many" relations

Eloquent adds _count properties for entities fetched by withCount method and you can add these properties to the helper code:
User::withCount('posts')->first()->posts_count.


Remove phpDocs from model classes

The last option will remove all phpDocs from models.
Clear ide-helper phpDocs, for example.

Completions

After generating a helper code Laravel Idea starts to complete fields and relations almost everywhere:


Even in complex cases, it understands that here it should complete Post class fields:


Relations chain is also not a problem:


Fields inside class:

Code generations

JSON resource generation is accessible from the main Code generation menu or in the Generate context menu: (Cmd-N, Alt-Insert) in the Eloquent class. It uses fields and relations information to generate full JSON resource for this class:


Database factory generation is accessible from the main Code generation menu or in the Generate context menu: (Cmd-N, Alt-Insert) in the Eloquent class. It uses fields and relations information to generate full database factory for this class:

Database factory type hinting

Laravel Idea hints the type of factory()->create() calls:


Multiple create also supported:

Productivity Tips

Autocomplete $fillable property

Laravel Idea provides a quick way to complete $fillable property of Eloquent models automatically.
Run Generate command(Cmd-N, Alt-Insert) inside $fillable property array and choose Add All Fields:

{primary} This works only if Eloquent Helper code was generated before.