Pieter Willekens and laravel-ide-helper
fd3cfbe09d
feat(ModelsCommand): add configuration option to disable model query methods ( #1692 )
...
* feat(ModelsCommand): add configuration option to disable model query methods
* composer fix-style
* update comment
* revert whitespace changes
* composer fix-style
* composer fix-style
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2026-02-11 11:45:10 +01:00
Pieter Willekens
3bd70eafd0
fix: wrap bare intersection types in parentheses when adding nullable ( #1756 )
...
When a MorphTo relation's docblock uses a bare intersection type in the
generic parameter (e.g. `MorphTo<BaseModel&CanBeAssigned, $this>`), the
generated property type incorrectly becomes `BaseModel&CanBeAssigned|null`
instead of the correct `(BaseModel&CanBeAssigned)|null`.
This adds `wrapIntersectionType()` which ensures bare intersection types
are wrapped in parentheses before `|null` is appended, producing valid
DNF type syntax. Applied in both `setProperty()` and `applyNullability()`.
2026-02-10 15:19:29 +01:00
Pieter Willekens
5aca186d92
perf: reduce redundant lookups and file I/O in generation hot paths ( #1757 )
...
- Convert usedMethods from list to hash map for O(1) dedup lookups
- Cache getRelationTypes() and getRelationReturnTypes() per command run
- Reuse SplFileObject instances by filename instead of re-opening per method
- Cache ContextFactory results per declaring class across docblock helpers
Benchmarked with hyperfine (10 runs, 2 warmup): 1.37x faster (~27%).
2026-02-10 15:18:58 +01:00
Barry vd. Heuvel
cff155b0d3
Replace psalm with larastan ( #1755 )
...
* Use larastan instead of psalm
* Fix cs
* Fix baseline
2026-02-07 14:32:53 +01:00
Sava and Sava Markovic
d87ec5835d
Support all DNF types from PHP RFC ( #1751 )
...
* Support all DNF types from PHP RFC
* Update failing test
---------
Co-authored-by: Sava Markovic <[email protected] >
2026-01-26 14:24:36 +01:00
Evan Burrell
b0dcd7c62f
Make Soft Deleted Relationships Nullable ( #1749 )
2026-01-11 14:34:18 +01:00
Jaspur and Barry vd. Heuvel
2ac73f2953
Skip calling fake() when required parameters exist (Socialite compatibility) ( #1746 )
...
* Skip calling fake() on facades that require parameters (fix Socialite error)
The ide-helper attempted to invoke Facade::fake() unconditionally, which
breaks when a facade (such as Laravel Socialite) requires a mandatory
parameter in its fake() method signature. This resulted in an
ArgumentCountError during `php artisan ide-helper:generate`.
This patch adds a ReflectionMethod check and skips calling fake() when
required parameters are present, ensuring compatibility with Socialite
and preserving expected behavior for facades that support parameterless
faking.
* Update Alias.php
---------
Co-authored-by: Barry vd. Heuvel <[email protected] >
2025-12-10 10:31:15 +01:00
Yannick Schinko
b106f7ee85
Add support for decimal column type ( #1739 )
...
* Add support for `decimal` column type
Previously `decimal` columns were represented with a cast. This now is no longer the case and instead the column type itself is `decimal`. This change takes that into account.
* The column type may also be `numeric`
* Update tests
2025-12-10 10:11:07 +01:00
Jesper Noordsij
e9283c40a2
Remove calls to PHP 8.5-deprecated setAccessible ( #1744 )
...
These are no-op as of PHP 8.1 and thus no longer needed
See also https://wiki.php.net/rfc/make-reflection-setaccessible-no-op
2025-12-10 10:10:09 +01:00
WentTheFox
12a0d7d54c
Fix alias fake error ( #1745 )
...
* Add catch block in Alias::detectFake
* Update Alias unit tests
2025-12-10 10:09:42 +01:00
Keita Shima
8dff6bb5ff
Fix typos in documentation and code comments ( #1733 )
...
- Fixed 'seperate' to 'separate' in README.md (2 occurrences)
- Fixed 'columname' to 'columnname' in README.md (2 occurrences)
- Fixed 'Wether' to 'Whether' in src/Method.php PHPDoc comments (2 occurrences)
2025-09-15 14:14:26 +02:00
erikn69 and Joel Stein
8d00250cba
Add magic *_exists properties ( #1712 )
...
* Added magic `*_exists` properties.
* fix return datatype
* disabled by default
---------
Co-authored-by: Joel Stein <[email protected] >
2025-07-17 22:11:57 +02:00
Pieter Willekens
fafe264b3c
fix(ModelsCommand): use 'string' as realType for 'encrypted' casts ( #1698 )
2025-07-17 08:06:36 +02:00
Kristijan
cff244b9b5
fix: Fixed wrong doc for softDeletes withTrashed method ( #1688 )
2025-07-17 07:50:16 +02:00
erikn69
6c4ba2ad38
Support AsCollection::of($map), AsCollection::using($class, $map) ( #1714 )
...
* Support `AsCollection::of($map)`, `AsCollection::using($class, $map)`
* test compatibility(`of($map)`,`using($class, $map)` compiled), only laravel `>=12.10`
2025-07-17 07:23:52 +02:00
laravel-ide-helper
ae0a06d406
composer fix-style
2025-05-15 07:57:32 +00:00
erikn69
e0b2f86326
Configurable macro return type defaults ( #1711 )
2025-05-15 09:56:31 +02:00
erikn69
c775aec1bb
Revert #1629 - _Allow adding custom Macroable classes_ ( #1707 )
...
* Revert #1629 - Allow adding custom Macroable classes
* Add Macros test
2025-05-14 20:21:17 +02:00
Marvin Naumann
0fa96e572d
detect default parameter from type float and adding tests for scopes with typed parameters ( #1697 )
2025-04-22 15:31:43 +02:00
8eec4f1ff5
feat(ModelsCommand): add support for the new Scope attribute ( #1694 )
...
* composer fix-style
* feat(model): add support for new Scope attribute
* composer fix-style
* snapshot
* check if class_exists for psalm
* check if class_exists for psalm
* resolve psalm issue
* remove prefix slash
* revert whitespace changes
* composer fix-style
* Update composer.json
---------
Co-authored-by: laravel-ide-helper <[email protected] >
Co-authored-by: Barry vd. Heuvel <[email protected] >
2025-04-04 16:14:00 +02:00
Pieter Willekens
d567978ebe
chore(meta): ignore abstracts in the autoloader ( Fixes #1671 ) ( #1686 )
2025-02-27 20:19:11 +01:00
KentarouTakeda
09623f216c
Add extends declaration for Macroable classes to fix missing inherited methods ( #1674 )
2025-02-22 16:59:08 +01:00
Tom Westrick
3d4e37798e
Fix AsArrayObject cast to be Laravel's ArrayObject ( #1675 )
2025-02-22 15:16:07 +01:00
yparitcher
40485e7350
Fix MorphTo Model Doc Generation ( #1668 )
...
fix:
```php
/**
* @return MorphTo<contravariant ModelA|ModelB, $this>
*/
public function reminderable(): MorphTo {
return $this->morphTo(__FUNCTION__, 'entity', 'entity_id');
}
```
From:
```php
* @property-read contravariant ModelA|ModelB $reminderable
```
To:
```php
* @property-read ModelA|ModelB $reminderable
```
Fixes : #1667
2025-02-04 17:49:42 +01:00
skyler544 and Skyler Mayfield
ead24b10f6
prevent generation of incorrect property annotation ( #1665 )
...
Co-authored-by: Skyler Mayfield <[email protected] >
2025-01-29 22:43:43 +01:00
Barry vd. Heuvel
980a87e250
Check if returnType from docblock is not null ( #1658 )
2025-01-14 10:07:00 +01:00
Barry vd. Heuvel and laravel-ide-helper
299a81b9bb
Convert auth() helper to use Auth facade ( #1656 )
...
* Convert auth() helper to use Auth facade
* composer fix-style
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2025-01-08 13:50:47 +01:00
Casper Bloemendaal
271682a2a6
feat: use generics of return type to determine resulting models ( #1653 )
2025-01-08 11:01:30 +01:00
Barry vd. Heuvel and laravel-ide-helper
bb1caed698
Check if macro is valid ( #1655 )
...
* Check if macro is valid
* composer fix-style
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2025-01-08 11:00:53 +01:00
Barry vd. Heuvel and laravel-ide-helper
55268cd47a
Catch meta, tweak auth ( #1654 )
...
* Catch meta, tweak auth
* composer fix-style
* Catch meta, tweak auth
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2025-01-08 11:00:41 +01:00
Barry vd. Heuvel
4c656cc71d
Remove duplicate config, fix ->can() ( #1650 )
2025-01-06 15:08:47 +01:00
Mathieu TUDISCO and Barry vd. Heuvel
05d9c3cd65
Allow adding custom Macroable classes. ( #1629 )
...
* Allow adding custom Macroable classes.
* Remove duplication, tweak config
* Remove test
---------
Co-authored-by: Barry vd. Heuvel <[email protected] >
2025-01-01 13:17:20 +01:00
Barry vd. Heuvel and laravel-ide-helper
beda399e7e
Feat guess macro types ( #1648 )
...
* Add default class for HttpClient macro
* composer fix-style
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2025-01-01 10:44:43 +01:00
Nereo Berardozzi
0bbca8f5e2
Fixed generating PHPDoc for methods with class templates ( #1647 )
...
* Fixed generating PHPDoc for methods with class templates
* Fix style
* Use getter for alias template names
* Fixed missing class in static analysis
2024-12-31 17:18:28 +01:00
Barry vd. Heuvel and laravel-ide-helper
f8381565ad
Add more metadata ( #1646 )
...
* Add more metadata
* composer fix-style
* Parse .env
* composer fix-style
* Check if .env exists
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-12-30 15:06:36 +01:00
Barry vd. Heuvel
cffcd07e98
Also add eloquent template tags from base class ( #1645 )
2024-12-30 12:58:28 +01:00
Barry vd. Heuvel and laravel-ide-helper
9c6380da4a
Remove php parser ( #1644 )
...
* Remove php parser
* composer fix-style
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-12-30 12:42:35 +01:00
Barry vd. Heuvel and laravel-ide-helper
e509790805
Use forked ContextFactory ( #1643 )
...
* Use forked ContextFactory
* composer fix-style
* Trim slashes
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-12-30 12:03:45 +01:00
Barry vd. Heuvel and laravel-ide-helper
791ba555f4
Add meta override for user return types ( #1642 )
...
* Add meta override for user return types
* composer fix-style
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-12-30 10:31:30 +01:00
Barry vd. Heuvel and laravel-ide-helper
4e4da0825a
Add phpstorm meta argument hints ( #1640 )
...
* Add phpstorm meta hints
* composer fix-style
* Use php-templates from vs-code
* Fix view instance
* composer fix-style
* Add translations
* composer fix-style
* map to string
* composer fix-style
* Fix test
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-12-29 19:44:08 +01:00
Barry vd. Heuvel and pb30
f343efa140
Pb30 version var rename ( #1637 )
...
* Update view "version" variable name to avoid potential conflicts
* Remove version
---------
Co-authored-by: pb30 <[email protected] >
2024-12-29 12:11:06 +01:00
Barry vd. Heuvel
0fa0403e57
Check if alias is valid
2024-12-29 12:03:42 +01:00
Lau Ernebjerg Josefsen
4ad74ba241
Add weak generics for array type objects ( #1621 )
2024-12-29 11:52:05 +01:00
Barry vd. Heuvel and laravel-ide-helper
347483be03
Add option for only eloquent ( #1636 )
...
* Add option for only eloquent
* composer fix-style
* Add snapshot
* Add option to models command
* composer fix-style
* Fix namespace
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-12-29 11:51:09 +01:00
Barry vd. Heuvel and laravel-ide-helper
14fdb572bb
Update testsuite for Generator, simplify service provider and mock ( #1635 )
...
* Add templates to Eloquent
* Test generator, update constructor
* composer fix-style
* Add filename test
* UPdate test
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-12-28 19:56:36 +01:00
Barry vd. Heuvel
c33eacdefc
Add templates to Eloquent ( #1634 )
2024-12-28 11:17:17 +01:00
Lito
b7675670f7
Assign $output method parameter to $this->output on Generator ( #1623 )
...
The `$output` method parameter is not being assigned to the `$this->output` class variable.
2024-12-18 09:24:19 +01:00
Lito
5da09fad67
Fixed PHP 8.4 deprecation warning ( #1622 )
...
* Fixed PHP 8.4 deprecation warning
* Fix PHP 8.4 deprecation warning
2024-12-09 16:03:20 +01:00
Carl-Philipp Jung and laravel-ide-helper
e3ec773374
Improve replacement of return type for methods from Query\Builder ( #1575 )
...
* Add return type `|static` to Query\Builder methods (#1574 )
* Replace return type Query\Builder with Eloquent\Builder (#1574 )
* Replace return type Query\Builder only for facade Eloquent (#1574 )
* Add special return type replacement for Macros of \Eloquent
* Restrict special return type to methods from Eloquent\Builder and Query\Builder
* Do not overwrite return type in normalizeReturn() with conditional call of setType()
* Use generic return type for builder methods in \Eloquent
* composer fix-style
---------
Co-authored-by: laravel-ide-helper <[email protected] >
2024-10-31 15:47:27 +01:00
Jeramy Hing
472c1bad5d
Feature: Add Config Option to Enforce Nullable Relationships ( #1580 )
...
* feat: add config option for nullable relationships
Introduce enforce_nullable_relationships configuration to control nullable Eloquent relationships.
* refactor: update logic for nullable relationships
Update isRelationNullable method to respect new config option.
* test: add tests for nullable relationship config
- Verify behavior of enforce_nullable_relationships configuration option.
- Create snapshot to reflect enforce_nullable_relationships set to false.
* docs: improve documented context and usage
* docs: update CHANGELOG with enforce_nullable_relationships option
2024-10-30 22:35:58 +01:00