Compare commits

...
23 Commits
Author SHA1 Message Date
Barry vd. Heuvel 160c12d20f Update CHANGELOG.md 2024-07-12 16:20:20 +02:00
Barry vd. Heuvel 2dba19133c Fix style again (#1569) 2024-07-12 16:16:37 +02:00
schrosis 001091e605 fix: unknown format PHPDoc (#1538) 2024-07-12 16:09:08 +02:00
Barry vd. Heuvel ccac27c8cf Bump dev alias to 3.1 2024-07-12 16:08:33 +02:00
f5759e2001 Add static to isBuiltin() check in ide-helper:models (#1541)
* Add `\\static` as check

For some reason, the `static` keyword as a return type, does not return `isBuiltin()` === true, so a `\\` is added. We need to manually add it to the built in check.

* Update ModelsCommand.php

* Add tests

* Add CHANGELOG.md entry

---------

Co-authored-by: Markus Podar <[email protected]>
Co-authored-by: Barry vd. Heuvel <[email protected]>
2024-07-12 16:08:08 +02:00
michalandBarry vd. Heuvel f7a3dc8ff2 Add support in morphTo relationship for null values (1547) (#1549)
Co-authored-by: Barry vd. Heuvel <[email protected]>
2024-07-12 16:06:56 +02:00
Braunson YagerandBarry vd. Heuvel 672acce5ae feat: add support for AsEnumCollection casts (#1557)
* Adding support for casting to AsEnumCollection

* Adding missing string to advanced_casts table for enum_collection

* Added to snapshots and ArrayCastsWithComment

* Update CHANGELOG.md

* Reverted automated whitespace, strict changes

* Updated test snapshots, tests passing

* Whitespace revert

---------

Co-authored-by: Barry vd. Heuvel <[email protected]>
2024-07-12 16:03:57 +02:00
Benedikt Franke 67c00c0978 Improve config file (#1564)
* Improve config file

- Terminate all descriptions with a dot .
- Update outdated descriptions
- Add missing examples

* Fix capitalizations
2024-07-12 15:58:21 +02:00
Barry vd. Heuvel a1573919c1 Update CHANGELOG.md 2024-07-12 15:56:03 +02:00
Markus Podar 0cf178aca9 composer fix-style (#1558) 2024-07-12 15:53:54 +02:00
c6509b658f Improved attribute handling with types and Attribute support (#1567)
* Add `AllowDynamicProperties` Attribute to cooperate with php8.2 deprecation

* lint snapshot

* Fix collection attribute typing

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update composer.json

* Fix collectino with template types WIP

* Add `AllowDynamicProperties` Attribute to cooperate with php8.2 deprecation

* Fix collection attribute typing

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update composer.json

* composer fix-style

* Fix tests

* Fix tests

* composer fix-style

* Fix collectino with complex template types{

* Delete phpactor

* Install from scrumble repo

* Implemented correct attribute handling

* composer fix-style

* Revert "Install from scrumble repo"

This reverts commit 3f1057adb6.

* Re-add barryvdh links

* Revert "Update composer.json"

This reverts commit 98252fe740.

* Fix pivot test

* Correct CHANGELOG.md with attribute merge request

* More clear PhpDocTypeParser filename and clarified directory according to PSR12

---------

Co-authored-by: GeoSot <[email protected]>
Co-authored-by: laravel-ide-helper <[email protected]>
Co-authored-by: Luukdewaaier <[email protected]>
Co-authored-by: Luuk de Weijer <[email protected]>
2024-07-12 15:53:04 +02:00
sforward 6338abb2d7 Fix return value of scopes from parent class (#1366) 2024-04-01 08:43:59 +02:00
dev2a ac7e186270 Add pivot class property (#1518)
* Add pivot class property

* Add test for pivot class properties

* Fix failed test for pivot class properties

* Update CHANGELOG.md

* Fix failed test
2024-03-11 14:37:15 +01:00
Barry vd. Heuvel bc1d67f01c Prepare 3.0 release (#1530)
* Prepare 3.0 release

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-03-01 13:53:18 +01:00
Markus Podar 8eab699835 phpunit --migrate-configuration (#1526) 2024-02-19 20:52:29 +01:00
Markus PodarandBarry vd. Heuvel 49ac75d805 Remove --smart-reset completely (#1525)
* Remove `--smart-reset` completely

See https://github.com/barryvdh/laravel-ide-helper/pull/1523#issuecomment-1952313183

* Update CHANGELOG.md

---------

Co-authored-by: Barry vd. Heuvel <[email protected]>
2024-02-19 14:03:16 +01:00
Barry vd. Heuvel 02af2a278a Merge reset/smart reset, don't set class (#1523)
* Merge reset/smart reset, don't set class

* Add changelog
2024-02-19 12:59:22 +01:00
Barry vd. Heuvel d7ed749f3e Use int/bool instead of longer variant (#1524)
* Use int/bool instead of longer variant

* Add changelog

* Update snapshots
2024-02-19 12:39:07 +01:00
Markus Podar 9af62e243d Bump minimum PHP version to 8.1 & misc maintenance (#1521)
* Bump minimum PHP version to 8.1

Laravel 10 doesn't support 8.0 anyway

* Remove phpunit 9

* gha: remove unused matrix dimension

* gha: bump runner os

* tests: remove outdated version checks
2024-02-17 22:08:15 +01:00
05259b695d Add support for Laravel 11 (#1520)
* update dependencies

* Implement new methods for `Authenticatable` contract

* Added Laravel 11 to CI test target

* normalize composer.json

* Remove obsolete migration method (column type) from test

* Update snapshots

* Add changelog entry

* Update readme

---------

Co-authored-by: 武田 憲太郎 <[email protected]>
Co-authored-by: barryvdh <[email protected]>
2024-02-17 11:32:56 +01:00
Barry vd. Heuvel 8bfe918f65 Update CHANGELOG.md 2024-02-17 11:27:21 +01:00
6579c0332b Remove doctrine (#1512)
* Remove doctrine

* Fix tests

* normalize composer.json

* Add back platform

* Bump integration versions

* composer fix-style

* Fix stability

* Bump minimum to 10.36

* Bump minimum to 10.38

* More types

* Fast fail off

* Bump docblock

* composer fix-style

* add bpchar

* Use match for type detection

Co-authored-by: Hafez Divandari <[email protected]>

* Use driverName

Co-authored-by: Hafez Divandari <[email protected]>

* fix match

* TWeak types

* Update snapshots

* Remove testbench 7

* composer fix-style

* Update src/Console/ModelsCommand.php

Co-authored-by: Hafez Divandari <[email protected]>

* Update src/Console/ModelsCommand.php

Co-authored-by: Hafez Divandari <[email protected]>

* Tweak bool

* Update src/Console/ModelsCommand.php

Co-authored-by: Hafez Divandari <[email protected]>

* composer fix-style

* Remove custom types, default to string

---------

Co-authored-by: barryvdh <[email protected]>
Co-authored-by: laravel-ide-helper <[email protected]>
Co-authored-by: Hafez Divandari <[email protected]>
2024-02-17 11:12:12 +01:00
Barry vd. Heuvel ed39977a30 Switch to 3.0 tag (#1519) 2024-02-17 11:11:50 +01:00
80 changed files with 1559 additions and 793 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ on:
jobs: jobs:
normalize: normalize:
timeout-minutes: 15 timeout-minutes: 15
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
steps: steps:
- name: Git checkout - name: Git checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
+2 -2
View File
@@ -7,7 +7,7 @@ jobs:
fix-style: fix-style:
name: Fix Code Style name: Fix Code Style
timeout-minutes: 15 timeout-minutes: 15
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
env: env:
COMPOSER_NO_INTERACTION: 1 COMPOSER_NO_INTERACTION: 1
@@ -18,7 +18,7 @@ jobs:
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: 8.0 php-version: 8.3
coverage: none coverage: none
- name: Install dependencies - name: Install dependencies
+6 -7
View File
@@ -12,20 +12,19 @@ on:
jobs: jobs:
php-laravel-integration-tests: php-laravel-integration-tests:
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
timeout-minutes: 15 timeout-minutes: 15
env: env:
COMPOSER_NO_INTERACTION: 1 COMPOSER_NO_INTERACTION: 1
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
php: [8.3, 8.2, 8.1, 8.0] php: [8.3, 8.2, 8.1]
laravel: [10.*, 9.*] laravel: [11.*, 10.*]
exclude: exclude:
- php: 8.0 - php: 8.1
laravel: 10.* laravel: 11.*
- php: 8.3
laravel: 9.*
name: P${{ matrix.php }} - Laravel${{ matrix.laravel }} name: P${{ matrix.php }} - Laravel${{ matrix.laravel }}
steps: steps:
- name: Checkout code - name: Checkout code
+3 -3
View File
@@ -9,15 +9,15 @@ on:
jobs: jobs:
build: build:
timeout-minutes: 15 timeout-minutes: 15
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: 8.1 php-version: 8.3
coverage: none coverage: none
extensions: pdo_sqlite extensions: pdo_sqlite
+8 -9
View File
@@ -18,16 +18,15 @@ jobs:
COMPOSER_NO_INTERACTION: 1 COMPOSER_NO_INTERACTION: 1
strategy: strategy:
fail-fast: false
matrix: matrix:
os: [ubuntu-20.04, windows-2019] os: [ubuntu-22.04, windows-2019]
php: [8.3, 8.2, 8.1, 8.0] php: [8.3, 8.2, 8.1]
laravel: [9.*, 10.*] laravel: [10.*, 11.*]
dependency-version: [prefer-lowest, prefer-stable] stability: [prefer-lowest, prefer-stable]
exclude: exclude:
- php: 8.0 - php: 8.1
laravel: 10.* laravel: 11.*
- php: 8.0
dependency-version: prefer-lowest
steps: steps:
- name: Set git to use LF - name: Set git to use LF
if: ${{ matrix.os == 'windows-2019' }} if: ${{ matrix.os == 'windows-2019' }}
@@ -50,7 +49,7 @@ jobs:
composer remove vimeo/psalm --no-update --dev composer remove vimeo/psalm --no-update --dev
composer remove friendsofphp/php-cs-fixer --no-update --dev composer remove friendsofphp/php-cs-fixer --no-update --dev
composer require "laravel/framework:${{ matrix.laravel }}" --no-update --no-progress composer require "laravel/framework:${{ matrix.laravel }}" --no-update --no-progress
composer update --prefer-dist --no-progress composer update --prefer-dist --no-progress --${{ matrix.stability }}
- name: Execute Unit Tests - name: Execute Unit Tests
run: composer test-ci run: composer test-ci
+33 -2
View File
@@ -2,7 +2,7 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
[Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v2.15.0...master) [Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v3.1.0...master)
-------------- --------------
### Fixed ### Fixed
@@ -11,6 +11,37 @@ All notable changes to this project will be documented in this file.
### Added ### Added
2024-07-12, 3.1.0
------------------
### Fixed
- Fix return value of query scopes from parent class [#1366 / sforward](https://github.com/barryvdh/laravel-ide-helper/pull/1366)
- Add static to isBuiltin() check in ide-helper:models [#1541 / bram-pkg](https://github.com/barryvdh/laravel-ide-helper/pull/1541)
- Fix for getSomethingAttribute functions which return a collection with type templating in the phpDoc. [#1567 / stefanScrumble](https://github.com/barryvdh/laravel-ide-helper/pull/1567)
### Added
- Add type to pivot when using a custom pivot class [#1518 / d3v2a](https://github.com/barryvdh/laravel-ide-helper/pull/1518)
- Add support in morphTo relationship for null values [#1547 / matysekmichal](https://github.com/barryvdh/laravel-ide-helper/pull/1547)
- Add support for AsEnumCollection casts [#1557 / Braunson](https://github.com/barryvdh/laravel-ide-helper/pull/1557)
- Support for Attribute class in attributes [#1567 / stefanScrumble](https://github.com/barryvdh/laravel-ide-helper/pull/1567)
2024-03-01, 3.0.0
------------------
### Added
- Support for Laravel 11 [#1520 / KentarouTakeda](https://github.com/barryvdh/laravel-ide-helper/pull/1520)
### Changed
- Make `--reset` always keep the text and remove `--smart-reset`. Always skip the classname [#1523 / barryvdh](https://github.com/barryvdh/laravel-ide-helper/pull/1523) & [#1525 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1525)
- Use short types (`int` and `bool` instead of `integer` and `boolean`) [#1524 / barryvdh](https://github.com/barryvdh/laravel-ide-helper/pull/1524)
### Removed
- Support for Laravel 9 and use of doctrine/dbal [#1512 / barryvdh](https://github.com/barryvdh/laravel-ide-helper/pull/1512)
With this functionality gone, a few changes have been made:
- support for custom datatypes has been dropped (config `custom_db_types`) unknown data types default to `string` now and to fix the type, add a proper cast in Eloquent
- You _might_ have top-level dependency on doctrine/dbal. This may have been in the past due to ide-helper, we suggest to check if you still need it and remove it otherwise
- Minimum PHP version, due to Laravel 10, is now PHP 8.1
2024-02-15, 2.15.1 2024-02-15, 2.15.1
------------------ ------------------
@@ -69,7 +100,7 @@ All notable changes to this project will be documented in this file.
- Handle PHP 8.1 deprecation warnings when passing `null` to `new \ReflectionClass` [#1351 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1351) - Handle PHP 8.1 deprecation warnings when passing `null` to `new \ReflectionClass` [#1351 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1351)
- Fix issue where \Eloquent is not included when using write_mixin [#1352 / Jefemy](https://github.com/barryvdh/laravel-ide-helper/pull/1352) - Fix issue where \Eloquent is not included when using write_mixin [#1352 / Jefemy](https://github.com/barryvdh/laravel-ide-helper/pull/1352)
- Fix model factory method arguments for Laravel >= 9 [#1361 / wimski](https://github.com/barryvdh/laravel-ide-helper/pull/1361) - Fix model factory method arguments for Laravel >= 9 [#1361 / wimski](https://github.com/barryvdh/laravel-ide-helper/pull/1361)
- Improve return type of mock helper methods in tests [#1405 / bentleyo](https://github.com/barryvdh/laravel-ide-helper/pull/1405) - Improve return type of mock helper methods in tests [#1405 / bentleyo](https://github.com/barryvdh/laravel-ide-helper/pull/1405)
- Fix Castable class if failed to detect it from return types [#1388 / kwarcu](https://github.com/barryvdh/laravel-ide-helper/pull/1388) - Fix Castable class if failed to detect it from return types [#1388 / kwarcu](https://github.com/barryvdh/laravel-ide-helper/pull/1388)
### Added ### Added
+2 -22
View File
@@ -11,7 +11,7 @@
This package generates helper files that enable your IDE to provide accurate autocompletion. This package generates helper files that enable your IDE to provide accurate autocompletion.
Generation is done based on the files in your project, so they are always up-to-date. Generation is done based on the files in your project, so they are always up-to-date.
It supports Laravel 9+ and PHP 8.0+ The 3.x branch supports Laravel 10 and 11. For older version, use the 2.x releases.
- [Installation](#installation) - [Installation](#installation)
- [Usage](#usage) - [Usage](#usage)
@@ -151,7 +151,7 @@ The class name will be different from the model, avoiding the IDE duplicate anno
Writing to the models should keep the existing comments and only append new properties/methods. It will not update changed properties/methods. Writing to the models should keep the existing comments and only append new properties/methods. It will not update changed properties/methods.
With the `--reset (-R)` option, the whole existing PHPDoc is replaced, including any comments that have been made. The `--smart-reset` option will instead keep the 'text' part of the phpdoc comment, and just replace all the property/method defininitions. With the `--reset (-R)` option, the whole existing PHPDoc is replaced, including any comments that have been made.
```bash ```bash
php artisan ide-helper:models "App\Models\Post" php artisan ide-helper:models "App\Models\Post"
@@ -271,26 +271,6 @@ add support for creating a new dedicated class instead of using local scopes in
If for some reason it's undesired to have them generated (one for each column), you can disable this via config `write_model_external_builder_methods` and setting it to `false`. If for some reason it's undesired to have them generated (one for each column), you can disable this via config `write_model_external_builder_methods` and setting it to `false`.
#### Unsupported or custom database types
Common column types (e.g. varchar, integer) are correctly mapped to PHP types (`string`, `int`).
But sometimes you may want to use custom column types in your database like `geography`, `jsonb`, `citext`, `bit`, etc. which may throw an "Unknown database type"-Exception.
For those special cases, you can map them via the config `custom_db_types`. Example:
```php
'custom_db_types' => [
'mysql' => [
'geography' => 'array',
'point' => 'array',
],
'postgresql' => [
'jsonb' => 'string',
'_int4' => 'array',
],
],
```
#### Custom Relationship Types #### Custom Relationship Types
If you are using relationships not built into Laravel you will need to specify the name and returning class in the config to get proper generation. If you are using relationships not built into Laravel you will need to specify the name and returning class in the config to get proper generation.
+13 -13
View File
@@ -20,30 +20,30 @@
} }
], ],
"require": { "require": {
"php": "^8.0", "php": "^8.1",
"ext-json": "*", "ext-json": "*",
"barryvdh/reflection-docblock": "^2.0.6", "barryvdh/reflection-docblock": "^2.1.1",
"composer/class-map-generator": "^1.0", "composer/class-map-generator": "^1.0",
"doctrine/dbal": "^2.6 || ^3.1.4", "illuminate/console": "^10 || ^11",
"illuminate/console": "^9 || ^10", "illuminate/database": "^10.38 || ^11",
"illuminate/filesystem": "^9 || ^10", "illuminate/filesystem": "^10 || ^11",
"illuminate/support": "^9 || ^10", "illuminate/support": "^10 || ^11",
"nikic/php-parser": "^4.18 || ^5", "nikic/php-parser": "^4.18 || ^5",
"phpdocumentor/type-resolver": "^1.1.0" "phpdocumentor/type-resolver": "^1.1.0"
}, },
"require-dev": { "require-dev": {
"ext-pdo_sqlite": "*", "ext-pdo_sqlite": "*",
"friendsofphp/php-cs-fixer": "^3", "friendsofphp/php-cs-fixer": "^3",
"illuminate/config": "^9 || ^10", "illuminate/config": "^9 || ^10 || ^11",
"illuminate/view": "^9 || ^10", "illuminate/view": "^9 || ^10 || ^11",
"mockery/mockery": "^1.4", "mockery/mockery": "^1.4",
"orchestra/testbench": "^7 || ^8", "orchestra/testbench": "^8 || ^9",
"phpunit/phpunit": "^9", "phpunit/phpunit": "^10.5",
"spatie/phpunit-snapshot-assertions": "^4", "spatie/phpunit-snapshot-assertions": "^4 || ^5",
"vimeo/psalm": "^5.4" "vimeo/psalm": "^5.4"
}, },
"suggest": { "suggest": {
"illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10)." "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)."
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
@@ -65,7 +65,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.15-dev" "dev-master": "3.1-dev"
}, },
"laravel": { "laravel": {
"providers": [ "providers": [
+25 -55
View File
@@ -4,21 +4,21 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Filename & Format | Filename
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| The default filename | The default filename.
| |
*/ */
'filename' => '_ide_helper.php', 'filename' => '_ide_helper.php',
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Models filename | Models filename
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| The default filename for the models helper file | The default filename for the models helper file.
| |
*/ */
@@ -26,7 +26,7 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Where to write the PhpStorm specific meta file | PhpStorm meta filename
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| PhpStorm also supports the directory `.phpstorm.meta.php/` with arbitrary | PhpStorm also supports the directory `.phpstorm.meta.php/` with arbitrary
@@ -41,7 +41,7 @@ return [
| Fluent helpers | Fluent helpers
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Set to true to generate commonly used Fluent methods | Set to true to generate commonly used Fluent methods.
| |
*/ */
@@ -49,7 +49,7 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Factory Builders | Factory builders
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Set to true to generate factory generators for better factory() | Set to true to generate factory generators for better factory()
@@ -63,10 +63,10 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Write Model Magic methods | Write model magic methods
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Set to false to disable write magic methods of model | Set to false to disable write magic methods of model.
| |
*/ */
@@ -74,10 +74,10 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Write Model External Eloquent Builder methods | Write model external Eloquent builder methods
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Set to false to disable write external eloquent builder methods | Set to false to disable write external Eloquent builder methods.
| |
*/ */
@@ -85,7 +85,7 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Write Model relation count properties | Write model relation count properties
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Set to false to disable writing of relation count properties to model DocBlocks. | Set to false to disable writing of relation count properties to model DocBlocks.
@@ -96,11 +96,11 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Write Eloquent Model Mixins | Write Eloquent model mixins
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| This will add the necessary DocBlock mixins to the model class | This will add the necessary DocBlock mixins to the model class
| contained in the Laravel Framework. This helps the IDE with | contained in the Laravel framework. This helps the IDE with
| auto-completion. | auto-completion.
| |
| Please be aware that this setting changes a file within the /vendor directory. | Please be aware that this setting changes a file within the /vendor directory.
@@ -134,7 +134,7 @@ return [
| for models. | for models.
| |
| glob patterns are supported to easier reach models in sub-directories, | glob patterns are supported to easier reach models in sub-directories,
| e.g. `app/Services/* /Models` (without the space) | e.g. `app/Services/* /Models` (without the space).
| |
*/ */
@@ -152,7 +152,7 @@ return [
*/ */
'ignored_models' => [ 'ignored_models' => [
// App\MyModel::class,
], ],
/* /*
@@ -160,7 +160,7 @@ return [
| Models hooks | Models hooks
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Define which hook classes you want to run for models to add custom information | Define which hook classes you want to run for models to add custom information.
| |
| Hooks should implement Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface. | Hooks should implement Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface.
| |
@@ -175,7 +175,7 @@ return [
| Extra classes | Extra classes
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| These implementations are not really extended, but called with magic functions | These implementations are not really extended, but called with magic functions.
| |
*/ */
@@ -197,37 +197,7 @@ return [
*/ */
'interfaces' => [ 'interfaces' => [
// App\MyInterface::class => App\MyImplementation::class,
],
/*
|--------------------------------------------------------------------------
| Support for custom DB types
|--------------------------------------------------------------------------
|
| This setting allow you to map any custom database type (that you may have
| created using CREATE TYPE statement or imported using database plugin
| / extension to a Doctrine type.
|
| Each key in this array is a name of the Doctrine2 DBAL Platform. Currently valid names are:
| 'postgresql', 'db2', 'drizzle', 'mysql', 'oracle', 'sqlanywhere', 'sqlite', 'mssql'
|
| This name is returned by getName() method of the specific Doctrine/DBAL/Platforms/AbstractPlatform descendant
|
| The value of the array is an array of type mappings. Key is the name of the custom type,
| (for example, "jsonb" from Postgres 9.4) and the value is the name of the corresponding Doctrine2 type (in
| our case it is 'json_array'. Doctrine types are listed here:
| https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#types
|
| So to support jsonb in your models when working with Postgres, just add the following entry to the array below:
|
| "postgresql" => array(
| "jsonb" => "json_array",
| ),
|
*/
'custom_db_types' => [
], ],
/* /*
@@ -258,7 +228,7 @@ return [
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Property Casts | Property casts
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Cast the given "real type" to the given "type". | Cast the given "real type" to the given "type".
@@ -285,9 +255,9 @@ return [
| Force FQN usage | Force FQN usage
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Use the fully qualified (class) name in docBlock, | Use the fully qualified (class) name in DocBlocks,
| event if class exists in a given file | even if the class exists in the same namespace
| or there is an import (use className) of a given class | or there is an import (use className) of the class.
| |
*/ */
'force_fqn' => false, 'force_fqn' => false,
@@ -309,8 +279,8 @@ return [
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| Sometimes it's needed to create custom relation types. The key of the array | Sometimes it's needed to create custom relation types. The key of the array
| is the Relationship Method name. The value of the array is the canonical class | is the relationship method name. The value of the array is the fully-qualified
| name of the Relationship, e.g. `'relationName' => RelationShipClass::class`. | class name of the relationship, e.g. `'relationName' => RelationShipClass::class`.
| |
*/ */
'additional_relation_types' => [], 'additional_relation_types' => [],
+7 -14
View File
@@ -1,24 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <phpunit
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
bootstrap="vendor/autoload.php" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd"
backupGlobals="false" cacheDirectory=".phpunit.result.cache"
backupStaticAttributes="false" >
colors="true"
verbose="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites> <testsuites>
<testsuite name="Unit Tests"> <testsuite name="Unit Tests">
<directory>tests</directory> <directory>tests</directory>
</testsuite> </testsuite>
</testsuites> </testsuites>
<coverage> <source>
<include> <include>
<directory suffix=".php">src/</directory> <directory suffix=".php">src/</directory>
</include> </include>
</coverage> </source>
</phpunit> </phpunit>
+112 -131
View File
@@ -12,19 +12,19 @@
namespace Barryvdh\LaravelIdeHelper\Console; namespace Barryvdh\LaravelIdeHelper\Console;
use Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface; use Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface;
use Barryvdh\LaravelIdeHelper\Parsers\PhpDocReturnTypeParser;
use Barryvdh\Reflection\DocBlock; use Barryvdh\Reflection\DocBlock;
use Barryvdh\Reflection\DocBlock\Context; use Barryvdh\Reflection\DocBlock\Context;
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer; use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
use Barryvdh\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
use Composer\ClassMapGenerator\ClassMapGenerator; use Composer\ClassMapGenerator\ClassMapGenerator;
use Doctrine\DBAL\Exception as DBALException;
use Doctrine\DBAL\Types\Type;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Contracts\Database\Eloquent\Castable; use Illuminate\Contracts\Database\Eloquent\Castable;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Contracts\Database\Eloquent\CastsInboundAttributes; use Illuminate\Contracts\Database\Eloquent\CastsInboundAttributes;
use Illuminate\Database\Eloquent\Casts\AsArrayObject; use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Casts\AsCollection; use Illuminate\Database\Eloquent\Casts\AsCollection;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -36,9 +36,12 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasOneThrough; use Illuminate\Database\Eloquent\Relations\HasOneThrough;
use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\MorphOne; use Illuminate\Database\Eloquent\Relations\MorphOne;
use Illuminate\Database\Eloquent\Relations\MorphPivot;
use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\Relations\MorphToMany;
use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Database\Schema\Builder;
use Illuminate\Filesystem\Filesystem; use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -106,11 +109,10 @@ class ModelsCommand extends Command
protected $write_mixin = false; protected $write_mixin = false;
protected $dirs = []; protected $dirs = [];
protected $reset; protected $reset;
protected $keep_text;
protected $phpstorm_noinspections; protected $phpstorm_noinspections;
protected $write_model_external_builder_methods; protected $write_model_external_builder_methods;
/** /**
* @var bool[string] * @var array<string, true>
*/ */
protected $nullableColumns = []; protected $nullableColumns = [];
/** /**
@@ -154,9 +156,6 @@ class ModelsCommand extends Command
$ignore = $this->option('ignore'); $ignore = $this->option('ignore');
$this->reset = $this->option('reset'); $this->reset = $this->option('reset');
$this->phpstorm_noinspections = $this->option('phpstorm-noinspections'); $this->phpstorm_noinspections = $this->option('phpstorm-noinspections');
if ($this->option('smart-reset')) {
$this->keep_text = $this->reset = true;
}
$this->write_model_magic_where = $this->laravel['config']->get('ide-helper.write_model_magic_where', true); $this->write_model_magic_where = $this->laravel['config']->get('ide-helper.write_model_magic_where', true);
$this->write_model_external_builder_methods = $this->laravel['config']->get('ide-helper.write_model_external_builder_methods', true); $this->write_model_external_builder_methods = $this->laravel['config']->get('ide-helper.write_model_external_builder_methods', true);
$this->write_model_relation_count_properties = $this->write_model_relation_count_properties =
@@ -199,7 +198,7 @@ class ModelsCommand extends Command
protected function getArguments() protected function getArguments()
{ {
return [ return [
['model', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Which models to include', []], ['model', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Which models to include', []],
]; ];
} }
@@ -211,21 +210,21 @@ class ModelsCommand extends Command
protected function getOptions() protected function getOptions()
{ {
return [ return [
['filename', 'F', InputOption::VALUE_OPTIONAL, 'The path to the helper file'], ['filename', 'F', InputOption::VALUE_OPTIONAL, 'The path to the helper file'],
['dir', 'D', InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, ['dir', 'D', InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
'The model dir, supports glob patterns', [], ], 'The model dir, supports glob patterns', [], ],
['write', 'W', InputOption::VALUE_NONE, 'Write to Model file'], ['write', 'W', InputOption::VALUE_NONE, 'Write to Model file'],
['write-mixin', 'M', InputOption::VALUE_NONE, ['write-mixin', 'M', InputOption::VALUE_NONE,
"Write models to {$this->filename} and adds @mixin to each model, avoiding IDE duplicate declaration warnings", "Write models to {$this->filename} and adds @mixin to each model, avoiding IDE duplicate declaration warnings",
], ],
['nowrite', 'N', InputOption::VALUE_NONE, 'Don\'t write to Model file'], ['nowrite', 'N', InputOption::VALUE_NONE, 'Don\'t write to Model file'],
['reset', 'R', InputOption::VALUE_NONE, 'Remove the original phpdocs instead of appending'], ['reset', 'R', InputOption::VALUE_NONE, 'Remove the original phpdocs instead of appending'],
['smart-reset', 'r', InputOption::VALUE_NONE, 'Refresh the properties/methods list, but keep the text'], ['smart-reset', 'r', InputOption::VALUE_NONE, 'Refresh the properties/methods list, but keep the text'],
['phpstorm-noinspections', 'p', InputOption::VALUE_NONE, ['phpstorm-noinspections', 'p', InputOption::VALUE_NONE,
'Add PhpFullyQualifiedNameUsageInspection and PhpUnnecessaryFullyQualifiedNameInspection PHPStorm ' . 'Add PhpFullyQualifiedNameUsageInspection and PhpUnnecessaryFullyQualifiedNameInspection PHPStorm ' .
'noinspection tags', 'noinspection tags',
], ],
['ignore', 'I', InputOption::VALUE_OPTIONAL, 'Which models to ignore', ''], ['ignore', 'I', InputOption::VALUE_OPTIONAL, 'Which models to ignore', ''],
]; ];
} }
@@ -244,8 +243,6 @@ class ModelsCommand extends Command
*/ */
\n\n"; \n\n";
$hasDoctrine = interface_exists('Doctrine\DBAL\Driver');
if (empty($loadModels)) { if (empty($loadModels)) {
$models = $this->loadModels(); $models = $this->loadModels();
} else { } else {
@@ -288,9 +285,7 @@ class ModelsCommand extends Command
$model = $this->laravel->make($name); $model = $this->laravel->make($name);
if ($hasDoctrine) { $this->getPropertiesFromTable($model);
$this->getPropertiesFromTable($model);
}
if (method_exists($model, 'getCasts')) { if (method_exists($model, 'getCasts')) {
$this->castPropertiesType($model); $this->castPropertiesType($model);
@@ -314,13 +309,6 @@ class ModelsCommand extends Command
} }
} }
if (!$hasDoctrine) {
$this->error(
'Warning: `"doctrine/dbal": "~2.3"` is required to load database information. ' .
'Please require that in your composer.json and run `composer update`.'
);
}
return $output; return $output;
} }
@@ -390,7 +378,7 @@ class ModelsCommand extends Command
break; break;
case 'boolean': case 'boolean':
case 'bool': case 'bool':
$realType = 'boolean'; $realType = 'bool';
break; break;
case 'decimal': case 'decimal':
case 'string': case 'string':
@@ -406,7 +394,7 @@ class ModelsCommand extends Command
case 'int': case 'int':
case 'integer': case 'integer':
case 'timestamp': case 'timestamp':
$realType = 'integer'; $realType = 'int';
break; break;
case 'real': case 'real':
case 'double': case 'double':
@@ -422,6 +410,7 @@ class ModelsCommand extends Command
$realType = '\Carbon\CarbonImmutable'; $realType = '\Carbon\CarbonImmutable';
break; break;
case AsCollection::class: case AsCollection::class:
case AsEnumCollection::class:
case 'collection': case 'collection':
$realType = '\Illuminate\Support\Collection'; $realType = '\Illuminate\Support\Collection';
break; break;
@@ -508,35 +497,14 @@ class ModelsCommand extends Command
* *
* @param Model $model * @param Model $model
* *
* @throws DBALException If custom field failed to register
*/ */
public function getPropertiesFromTable($model) public function getPropertiesFromTable($model)
{ {
$database = $model->getConnection()->getDatabaseName(); $table = $model->getTable();
$table = $model->getConnection()->getTablePrefix() . $model->getTable(); $schema = $model->getConnection()->getSchemaBuilder();
$schema = $model->getConnection()->getDoctrineSchemaManager(); $columns = $schema->getColumns($table);
$databasePlatform = $schema->getDatabasePlatform(); $driverName = $model->getConnection()->getDriverName();
$databasePlatform->registerDoctrineTypeMapping('enum', 'string');
if (strpos($table, '.')) {
[$database, $table] = explode('.', $table);
}
$platformName = $databasePlatform->getName();
$customTypes = $this->laravel['config']->get("ide-helper.custom_db_types.{$platformName}", []);
foreach ($customTypes as $yourTypeName => $doctrineTypeName) {
try {
if (!Type::hasType($yourTypeName)) {
Type::addType($yourTypeName, get_class(Type::getType($doctrineTypeName)));
}
} catch (DBALException $exception) {
$this->error("Failed registering custom db type \"$yourTypeName\" as \"$doctrineTypeName\"");
throw $exception;
}
$databasePlatform->registerDoctrineTypeMapping($yourTypeName, $doctrineTypeName);
}
$columns = $schema->listTableColumns($table, $database);
if (!$columns) { if (!$columns) {
return; return;
@@ -544,50 +512,28 @@ class ModelsCommand extends Command
$this->setForeignKeys($schema, $table); $this->setForeignKeys($schema, $table);
foreach ($columns as $column) { foreach ($columns as $column) {
$name = $column->getName(); $name = $column['name'];
if (in_array($name, $model->getDates())) { if (in_array($name, $model->getDates())) {
$type = $this->dateClass; $type = $this->dateClass;
} else { } else {
$type = $column->getType()->getName(); // Match types to php equivalent
switch ($type) { $type = match ($column['type_name']) {
case 'string': 'tinyint', 'bit',
case 'text': 'integer', 'int', 'int4',
case 'date': 'smallint', 'int2',
case 'time': 'mediumint',
case 'guid': 'bigint', 'int8' => 'int',
case 'datetimetz':
case 'datetime': 'boolean', 'bool' => 'bool',
case 'decimal':
case 'binary': 'float', 'real', 'float4',
$type = 'string'; 'double', 'float8' => 'float',
break;
case 'integer': default => 'string',
case 'bigint': };
case 'smallint':
$type = 'integer';
break;
case 'boolean':
switch ($platformName) {
case 'sqlite':
case 'mysql':
$type = 'integer';
break;
default:
$type = 'boolean';
break;
}
break;
case 'float':
$type = 'float';
break;
default:
$type = 'mixed';
break;
}
} }
$comment = $column->getComment(); if ($column['nullable']) {
if (!$column->getNotnull()) {
$this->nullableColumns[$name] = true; $this->nullableColumns[$name] = true;
} }
$this->setProperty( $this->setProperty(
@@ -595,8 +541,8 @@ class ModelsCommand extends Command
$this->getTypeInModel($model, $type), $this->getTypeInModel($model, $type),
true, true,
true, true,
$comment, $column['comment'],
!$column->getNotnull() $column['nullable']
); );
if ($this->write_model_magic_where) { if ($this->write_model_magic_where) {
$builderClass = $this->write_model_external_builder_methods $builderClass = $this->write_model_external_builder_methods
@@ -638,10 +584,7 @@ class ModelsCommand extends Command
$isAttribute = is_a($type, '\Illuminate\Database\Eloquent\Casts\Attribute', true); $isAttribute = is_a($type, '\Illuminate\Database\Eloquent\Casts\Attribute', true);
$method = $reflection->getName(); $method = $reflection->getName();
if ( if (
Str::startsWith($method, 'get') && Str::endsWith( Str::startsWith($method, 'get') && Str::endsWith($method, 'Attribute') && $method !== 'getAttribute'
$method,
'Attribute'
) && $method !== 'getAttribute'
) { ) {
//Magic get<name>Attribute //Magic get<name>Attribute
$name = Str::snake(substr($method, 3, -9)); $name = Str::snake(substr($method, 3, -9));
@@ -657,15 +600,14 @@ class ModelsCommand extends Command
$this->setProperty( $this->setProperty(
Str::snake($method), Str::snake($method),
$type, $type,
$types->has('get'), $types->has('get') ?: null,
$types->has('set'), $types->has('set') ?: null,
$this->getCommentFromDocBlock($reflection) $this->getCommentFromDocBlock($reflection)
); );
} elseif ( } elseif (
Str::startsWith($method, 'set') && Str::endsWith( Str::startsWith($method, 'set') &&
$method, Str::endsWith($method, 'Attribute') &&
'Attribute' $method !== 'setAttribute'
) && $method !== 'setAttribute'
) { ) {
//Magic set<name>Attribute //Magic set<name>Attribute
$name = Str::snake(substr($method, 3, -9)); $name = Str::snake(substr($method, 3, -9));
@@ -674,7 +616,7 @@ class ModelsCommand extends Command
$this->setProperty($name, null, null, true, $comment); $this->setProperty($name, null, null, true, $comment);
} }
} elseif (Str::startsWith($method, 'scope') && $method !== 'scopeQuery' && $method !== 'scope' && $method !== 'scopes') { } elseif (Str::startsWith($method, 'scope') && $method !== 'scopeQuery' && $method !== 'scope' && $method !== 'scopes') {
//Magic set<name>Attribute //Magic scope<name>Attribute
$name = Str::camel(substr($method, 5)); $name = Str::camel(substr($method, 5));
if (!empty($name)) { if (!empty($name)) {
$comment = $this->getCommentFromDocBlock($reflection); $comment = $this->getCommentFromDocBlock($reflection);
@@ -686,8 +628,8 @@ class ModelsCommand extends Command
get_class($model->newModelQuery()) get_class($model->newModelQuery())
); );
$modelName = $this->getClassNameInDestinationFile( $modelName = $this->getClassNameInDestinationFile(
$reflection->getDeclaringClass(), new ReflectionClass($model),
$reflection->getDeclaringClass()->getName() get_class($model)
); );
$this->setMethod($name, $builder . '|' . $modelName, $args, $comment); $this->setMethod($name, $builder . '|' . $modelName, $args, $comment);
} }
@@ -768,6 +710,17 @@ class ModelsCommand extends Command
strpos(get_class($relationObj), 'Many') !== false strpos(get_class($relationObj), 'Many') !== false
) )
) { ) {
if ($relationObj instanceof BelongsToMany) {
$pivot = get_class($relationObj->newPivot());
if (!in_array($pivot, [Pivot::class, MorphPivot::class])) {
$this->setProperty(
$relationObj->getPivotAccessor(),
$this->getClassNameInDestinationFile($model, $pivot),
true,
false
);
}
}
//Collection or array of models (because Collection is Arrayable) //Collection or array of models (because Collection is Arrayable)
$relatedClass = '\\' . get_class($relationObj->getRelated()); $relatedClass = '\\' . get_class($relationObj->getRelated());
$collectionClass = $this->getCollectionClass($relatedClass); $collectionClass = $this->getCollectionClass($relatedClass);
@@ -805,7 +758,8 @@ class ModelsCommand extends Command
$this->getClassNameInDestinationFile($model, Model::class) . '|\Eloquent', $this->getClassNameInDestinationFile($model, Model::class) . '|\Eloquent',
true, true,
null, null,
$comment $comment,
$this->isMorphToRelationNullable($relationObj)
); );
} else { } else {
//Single model is returned //Single model is returned
@@ -865,6 +819,33 @@ class ModelsCommand extends Command
return false; return false;
} }
/**
* Check if the morphTo relation is nullable
*
* @param Relation $relationObj
*
* @return bool
*/
protected function isMorphToRelationNullable(Relation $relationObj): bool
{
$reflectionObj = new ReflectionObject($relationObj);
if (!$reflectionObj->hasProperty('foreignKey')) {
return false;
}
$fkProp = $reflectionObj->getProperty('foreignKey');
$fkProp->setAccessible(true);
foreach (Arr::wrap($fkProp->getValue($relationObj)) as $foreignKey) {
if (isset($this->nullableColumns[$foreignKey])) {
return true;
}
}
return false;
}
/** /**
* @param string $name * @param string $name
* @param string|null $type * @param string|null $type
@@ -944,19 +925,13 @@ class ModelsCommand extends Command
if ($this->reset) { if ($this->reset) {
$phpdoc = new DocBlock('', new Context($namespace)); $phpdoc = new DocBlock('', new Context($namespace));
if ($this->keep_text) { $phpdoc->setText(
$phpdoc->setText( (new DocBlock($reflection, new Context($namespace)))->getText()
(new DocBlock($reflection, new Context($namespace)))->getText() );
);
}
} else { } else {
$phpdoc = new DocBlock($reflection, new Context($namespace)); $phpdoc = new DocBlock($reflection, new Context($namespace));
} }
if (!$phpdoc->getText()) {
$phpdoc->setText($class);
}
$properties = []; $properties = [];
$methods = []; $methods = [];
foreach ($phpdoc->getTags() as $tag) { foreach ($phpdoc->getTags() as $tag) {
@@ -1302,6 +1277,13 @@ class ModelsCommand extends Command
$phpdoc = new DocBlock($reflection, $context); $phpdoc = new DocBlock($reflection, $context);
if ($phpdoc->hasTag('return')) { if ($phpdoc->hasTag('return')) {
$returnTag = $phpdoc->getTagsByName('return')[0];
$typeParser = new PhpDocReturnTypeParser($returnTag->getContent(), $context->getNamespaceAliases());
if ($typeAlias = $typeParser->parse()) {
return $typeAlias;
}
$type = $phpdoc->getTagsByName('return')[0]->getType(); $type = $phpdoc->getTagsByName('return')[0]->getType();
} }
@@ -1651,7 +1633,7 @@ class ModelsCommand extends Command
protected function getReflectionNamedType(ReflectionNamedType $paramType): string protected function getReflectionNamedType(ReflectionNamedType $paramType): string
{ {
$parameterName = $paramType->getName(); $parameterName = $paramType->getName();
if (!$paramType->isBuiltin()) { if (!$paramType->isBuiltin() && $paramType->getName() !== 'static') {
$parameterName = '\\' . $parameterName; $parameterName = '\\' . $parameterName;
} }
@@ -1681,14 +1663,13 @@ class ModelsCommand extends Command
} }
/** /**
* @param \Doctrine\DBAL\Schema\AbstractSchemaManager $schema * @param Builder $schema
* @param string $table * @param string $table
* @throws DBALException
*/ */
protected function setForeignKeys($schema, $table) protected function setForeignKeys($schema, $table)
{ {
foreach ($schema->listTableForeignKeys($table) as $foreignKeyConstraint) { foreach ($schema->getForeignKeys($table) as $foreignKeyConstraint) {
foreach ($foreignKeyConstraint->getLocalColumns() as $columnName) { foreach ($foreignKeyConstraint['columns'] as $columnName) {
$this->foreignKeyConstraintsColumns[] = $columnName; $this->foreignKeyConstraintsColumns[] = $columnName;
} }
} }
+79
View File
@@ -0,0 +1,79 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Parsers;
class PhpDocReturnTypeParser
{
/**
* @var string
*/
private string $typeAlias;
/**
* @var array
*/
private array $namespaceAliases;
/**
* @param string $typeAlias
* @param array $namespaceAliases
*/
public function __construct(string $typeAlias, array $namespaceAliases)
{
$this->typeAlias = $typeAlias;
$this->namespaceAliases = $namespaceAliases;
}
/**
* @return string|null
*/
public function parse(): string|null
{
$matches = [];
preg_match('/(\w+)(<.*>)/', $this->typeAlias, $matches);
$matchCount = count($matches);
if ($matchCount === 0 || $matchCount === 1) {
return null;
}
if (empty($this->namespaceAliases[$matches[1]])) {
return null;
}
return $this->namespaceAliases[$matches[1]] . $this->parseTemplate($matches[2] ?? null);
}
/**
* @param string|null $template
* @return string
*/
private function parseTemplate(string|null $template): string
{
if ($template === null || $template === '') {
return '';
}
$type = '';
$result = '';
foreach (str_split($template) as $char) {
$match = preg_match('/[A-z]/', $char);
if (!$match) {
$type = $this->namespaceAliases[$type] ?? $type;
$result .= $type;
$result .= $char;
$type = '';
continue;
}
$type .= $char;
}
return $result;
}
}
@@ -6,6 +6,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Mo
use Illuminate\Database\Eloquent\Casts\AsArrayObject; use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Casts\AsCollection; use Illuminate\Database\Eloquent\Casts\AsCollection;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class AdvancedCast extends Model class AdvancedCast extends Model
@@ -24,6 +25,7 @@ class AdvancedCast extends Model
'cast_to_encrypted_json' => 'encrypted:json', 'cast_to_encrypted_json' => 'encrypted:json',
'cast_to_encrypted_object' => 'encrypted:object', 'cast_to_encrypted_object' => 'encrypted:object',
'cast_to_as_collection' => AsCollection::class, 'cast_to_as_collection' => AsCollection::class,
'cast_to_as_enum_collection' => AsEnumCollection::class,
'cast_to_as_array_object' => AsArrayObject::class, 'cast_to_as_array_object' => AsArrayObject::class,
]; ];
} }
@@ -6,18 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand; use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
use Illuminate\Foundation\Application;
class Test extends AbstractModelsCommand class Test extends AbstractModelsCommand
{ {
public function test(): void public function test(): void
{ {
if (!version_compare(Application::VERSION, '8.28', '>=')) {
$this->markTestSkipped(
'This test only works in Laravel >= 8.28'
);
}
$command = $this->app->make(ModelsCommand::class); $command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [ $tester = $this->runCommand($command, [
@@ -6,10 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Mo
use Illuminate\Database\Eloquent\Casts\AsArrayObject; use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Casts\AsCollection; use Illuminate\Database\Eloquent\Casts\AsCollection;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Models\AdvancedCast *
* *
* @property \Illuminate\Support\Carbon $cast_to_date_serialization * @property \Illuminate\Support\Carbon $cast_to_date_serialization
* @property \Illuminate\Support\Carbon $cast_to_datetime_serialization * @property \Illuminate\Support\Carbon $cast_to_datetime_serialization
@@ -17,19 +18,21 @@ use Illuminate\Database\Eloquent\Model;
* @property \Carbon\CarbonImmutable $cast_to_immutable_date * @property \Carbon\CarbonImmutable $cast_to_immutable_date
* @property \Carbon\CarbonImmutable $cast_to_immutable_custom_datetime * @property \Carbon\CarbonImmutable $cast_to_immutable_custom_datetime
* @property \Carbon\CarbonImmutable $cast_to_immutable_datetime * @property \Carbon\CarbonImmutable $cast_to_immutable_datetime
* @property integer $cast_to_timestamp * @property int $cast_to_timestamp
* @property mixed $cast_to_encrypted * @property mixed $cast_to_encrypted
* @property array $cast_to_encrypted_array * @property array $cast_to_encrypted_array
* @property \Illuminate\Support\Collection $cast_to_encrypted_collection * @property \Illuminate\Support\Collection $cast_to_encrypted_collection
* @property array $cast_to_encrypted_json * @property array $cast_to_encrypted_json
* @property object $cast_to_encrypted_object * @property object $cast_to_encrypted_object
* @property \Illuminate\Support\Collection $cast_to_as_collection * @property \Illuminate\Support\Collection $cast_to_as_collection
* @property \Illuminate\Support\Collection $cast_to_as_enum_collection
* @property \ArrayObject $cast_to_as_array_object * @property \ArrayObject $cast_to_as_array_object
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast newQuery() * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast query() * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast query()
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToAsArrayObject($value) * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToAsArrayObject($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToAsCollection($value) * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToAsCollection($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToAsEnumCollection($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToCustomDatetime($value) * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToCustomDatetime($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToDateSerialization($value) * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToDateSerialization($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToDatetimeSerialization($value) * @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToDatetimeSerialization($value)
@@ -60,6 +63,7 @@ class AdvancedCast extends Model
'cast_to_encrypted_json' => 'encrypted:json', 'cast_to_encrypted_json' => 'encrypted:json',
'cast_to_encrypted_object' => 'encrypted:object', 'cast_to_encrypted_object' => 'encrypted:object',
'cast_to_as_collection' => AsCollection::class, 'cast_to_as_collection' => AsCollection::class,
'cast_to_as_enum_collection' => AsEnumCollection::class,
'cast_to_as_array_object' => AsArrayObject::class, 'cast_to_as_array_object' => AsArrayObject::class,
]; ];
} }
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AllowGlobDirecto
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AllowGlobDirectory\Services\Post\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -20,36 +20,34 @@ use Illuminate\Database\Eloquent\Model;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -70,10 +68,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -143,8 +141,6 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -7,7 +7,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ArrayCastsWithCo
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ArrayCastsWithComment\Models\ArrayCastsWithComment *
* *
* @property array<int, string>|null $cast_to_array -- These three should not be duplicated * @property array<int, string>|null $cast_to_array -- These three should not be duplicated
* @property array<int, string> $cast_to_json some-description * @property array<int, string> $cast_to_json some-description
@@ -0,0 +1,59 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Attributes\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
class BackedAttribute extends Model
{
protected function name(): Attribute
{
return new Attribute(
function (?string $name): ?string {
return $name;
},
function (?string $name): ?string {
return $name;
}
);
}
protected function nameRead(): Attribute
{
return new Attribute(
function (?string $name): ?string {
return $name;
},
);
}
protected function nameWrite(): Attribute
{
return new Attribute(
set: function (?string $name): ?string {
return $name;
},
);
}
protected function nonBackedSet(): Attribute
{
return new Attribute(
set: function (?string $name): ?string {
return $name;
},
);
}
protected function nonBackedGet(): Attribute
{
return new Attribute(
get: function (): ?string {
return 'test';
},
);
}
}
@@ -8,9 +8,86 @@ use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Attributes\Models\Simple *
* *
* @property integer $id * @property int $id
* @property string|null $name
* @property string|null $name_read
* @property string|null $name_write
* @property-read string|null $non_backed_get
* @property-write string|null $non_backed_set
* @method static \Illuminate\Database\Eloquent\Builder|BackedAttribute newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BackedAttribute newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BackedAttribute query()
* @method static \Illuminate\Database\Eloquent\Builder|BackedAttribute whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BackedAttribute whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|BackedAttribute whereNameRead($value)
* @method static \Illuminate\Database\Eloquent\Builder|BackedAttribute whereNameWrite($value)
* @mixin \Eloquent
*/
class BackedAttribute extends Model
{
protected function name(): Attribute
{
return new Attribute(
function (?string $name): ?string {
return $name;
},
function (?string $name): ?string {
return $name;
}
);
}
protected function nameRead(): Attribute
{
return new Attribute(
function (?string $name): ?string {
return $name;
},
);
}
protected function nameWrite(): Attribute
{
return new Attribute(
set: function (?string $name): ?string {
return $name;
},
);
}
protected function nonBackedSet(): Attribute
{
return new Attribute(
set: function (?string $name): ?string {
return $name;
},
);
}
protected function nonBackedGet(): Attribute
{
return new Attribute(
get: function (): ?string {
return 'test';
},
);
}
}
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Attributes\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
/**
*
*
* @property int $id
* @property int $diverging_type_hinted_get_and_set * @property int $diverging_type_hinted_get_and_set
* @property string|null $name * @property string|null $name
* @property-read mixed $non_type_hinted_get * @property-read mixed $non_type_hinted_get
@@ -10,9 +10,9 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Relations\MorphTo;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Comment\Models\Simple *
* *
* @property integer $id * @property int $id
* @property string $both_same_name I'm a getter * @property string $both_same_name I'm a getter
* @property string $both_without_getter_comment * @property string $both_without_getter_comment
* @property-read string $faker_comment * @property-read string $faker_comment
@@ -9,9 +9,9 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomCollection\Models\Simple *
* *
* @property integer $id * @property int $id
* @property-read SimpleCollection<int, Simple> $relationHasMany * @property-read SimpleCollection<int, Simple> $relationHasMany
* @property-read int|null $relation_has_many_count * @property-read int|null $relation_has_many_count
* @method static SimpleCollection<int, static> all($columns = ['*']) * @method static SimpleCollection<int, static> all($columns = ['*'])
@@ -7,7 +7,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Model
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models\CustomDate *
* *
* @property \Carbon\CarbonImmutable|null $created_at * @property \Carbon\CarbonImmutable|null $created_at
* @property \Carbon\CarbonImmutable|null $updated_at * @property \Carbon\CarbonImmutable|null $updated_at
@@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\Model;
* *
* @link https://github.com/barryvdh/laravel-ide-helper/issues/666 * @link https://github.com/barryvdh/laravel-ide-helper/issues/666
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity) * @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
* @property integer $id * @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple query() * @method static \Illuminate\Database\Eloquent\Builder|Simple query()
@@ -13,9 +13,9 @@
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Models{ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Models{
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -26,36 +26,34 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGenerateP
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -76,10 +74,10 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGenerateP
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -149,8 +147,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGenerateP
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasOne;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic *
* *
* @property-read \Illuminate\Database\Eloquent\Collection<int, Dynamic> $regularHasMany * @property-read \Illuminate\Database\Eloquent\Collection<int, Dynamic> $regularHasMany
* @property-read int|null $regular_has_many_count * @property-read int|null $regular_has_many_count
@@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models\ModelWithCustomNamespace *
* *
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\CustomSpace\ModelWithCustomNamespaceFactory factory($count = null, $state = []) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\CustomSpace\ModelWithCustomNamespaceFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithCustomNamespace newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|ModelWithCustomNamespace newModelQuery()
@@ -41,7 +41,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models\ModelWithFactory *
* *
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Factories\ModelWithFactoryFactory factory($count = null, $state = []) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Factories\ModelWithFactoryFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithFactory newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|ModelWithFactory newModelQuery()
@@ -60,7 +60,7 @@ declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models; namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models\ModelWithNestedFactory *
* *
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Factories\ModelWithNestedFactoryFactory factory($count = null, $state = []) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Factories\ModelWithNestedFactoryFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithNestedFactory newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|ModelWithNestedFactory newModelQuery()
@@ -81,7 +81,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Factories\Models\ModelWithoutFactory *
* *
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithoutFactory newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|ModelWithoutFactory newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithoutFactory newQuery() * @method static \Illuminate\Database\Eloquent\Builder|ModelWithoutFactory newQuery()
@@ -11,12 +11,6 @@ class Test extends AbstractModelsCommand
{ {
public function test(): void public function test(): void
{ {
if (!version_compare(PHP_VERSION, '8.1', '>=')) {
$this->markTestSkipped(
'This test only works in PHP >= 8.1'
);
}
$command = $this->app->make(ModelsCommand::class); $command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [ $tester = $this->runCommand($command, [
@@ -9,9 +9,9 @@ use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -22,36 +22,34 @@ use Illuminate\Database\Eloquent\Model;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -72,10 +70,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -146,8 +144,6 @@ use Illuminate\Database\Eloquent\Model;
* @method static Builder|Post whereTinyIntegerNullable($value) * @method static Builder|Post whereTinyIntegerNullable($value)
* @method static Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static Builder|Post whereUnsignedBigIntegerNullable($value) * @method static Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static Builder|Post whereUnsignedDecimalNullable($value)
* @method static Builder|Post whereUnsignedIntegerNotNullable($value) * @method static Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static Builder|Post whereUnsignedIntegerNullable($value) * @method static Builder|Post whereUnsignedIntegerNullable($value)
* @method static Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhp
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -20,36 +20,34 @@ use Illuminate\Database\Eloquent\Model;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -70,10 +68,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -143,8 +141,6 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhp
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdocCamel\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $charNullable * @property string|null $charNullable
* @property string $charNotNullable * @property string $charNotNullable
* @property string|null $stringNullable * @property string|null $stringNullable
@@ -20,36 +20,34 @@ use Illuminate\Database\Eloquent\Model;
* @property string $mediumTextNotNullable * @property string $mediumTextNotNullable
* @property string|null $longTextNullable * @property string|null $longTextNullable
* @property string $longTextNotNullable * @property string $longTextNotNullable
* @property integer|null $integerNullable * @property int|null $integerNullable
* @property integer $integerNotNullable * @property int $integerNotNullable
* @property integer|null $tinyIntegerNullable * @property int|null $tinyIntegerNullable
* @property integer $tinyIntegerNotNullable * @property int $tinyIntegerNotNullable
* @property integer|null $smallIntegerNullable * @property int|null $smallIntegerNullable
* @property integer $smallIntegerNotNullable * @property int $smallIntegerNotNullable
* @property integer|null $mediumIntegerNullable * @property int|null $mediumIntegerNullable
* @property integer $mediumIntegerNotNullable * @property int $mediumIntegerNotNullable
* @property integer|null $bigIntegerNullable * @property int|null $bigIntegerNullable
* @property integer $bigIntegerNotNullable * @property int $bigIntegerNotNullable
* @property integer|null $unsignedIntegerNullable * @property int|null $unsignedIntegerNullable
* @property integer $unsignedIntegerNotNullable * @property int $unsignedIntegerNotNullable
* @property integer|null $unsignedTinyIntegerNullable * @property int|null $unsignedTinyIntegerNullable
* @property integer $unsignedTinyIntegerNotNullable * @property int $unsignedTinyIntegerNotNullable
* @property integer|null $unsignedSmallIntegerNullable * @property int|null $unsignedSmallIntegerNullable
* @property integer $unsignedSmallIntegerNotNullable * @property int $unsignedSmallIntegerNotNullable
* @property integer|null $unsignedMediumIntegerNullable * @property int|null $unsignedMediumIntegerNullable
* @property integer $unsignedMediumIntegerNotNullable * @property int $unsignedMediumIntegerNotNullable
* @property integer|null $unsignedBigIntegerNullable * @property int|null $unsignedBigIntegerNullable
* @property integer $unsignedBigIntegerNotNullable * @property int $unsignedBigIntegerNotNullable
* @property float|null $floatNullable * @property float|null $floatNullable
* @property float $floatNotNullable * @property float $floatNotNullable
* @property float|null $doubleNullable * @property float|null $doubleNullable
* @property float $doubleNotNullable * @property float $doubleNotNullable
* @property string|null $decimalNullable * @property string|null $decimalNullable
* @property string $decimalNotNullable * @property string $decimalNotNullable
* @property string|null $unsignedDecimalNullable * @property int|null $booleanNullable
* @property string $unsignedDecimalNotNullable * @property int $booleanNotNullable
* @property integer|null $booleanNullable
* @property integer $booleanNotNullable
* @property string|null $enumNullable * @property string|null $enumNullable
* @property string $enumNotNullable * @property string $enumNotNullable
* @property string|null $jsonNullable * @property string|null $jsonNullable
@@ -70,10 +68,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestampNotNullable * @property string $timestampNotNullable
* @property string|null $timestamptzNullable * @property string|null $timestamptzNullable
* @property string $timestamptzNotNullable * @property string $timestamptzNotNullable
* @property integer|null $yearNullable * @property int|null $yearNullable
* @property integer $yearNotNullable * @property int $yearNotNullable
* @property mixed|null $binaryNullable * @property string|null $binaryNullable
* @property mixed $binaryNotNullable * @property string $binaryNotNullable
* @property string|null $uuidNullable * @property string|null $uuidNullable
* @property string $uuidNotNullable * @property string $uuidNotNullable
* @property string|null $ipaddressNullable * @property string|null $ipaddressNullable
@@ -143,8 +141,6 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhp
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdocFinal\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -20,36 +20,34 @@ use Illuminate\Database\Eloquent\Model;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -70,10 +68,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -143,8 +141,6 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\Models;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
use Illuminate\Support\Collection as IntCollection;
class WithCollection extends Model
{
/**
* @return Collection<int, string>
*/
public function getCollectionAttribute(): Collection
{
return new Collection();
}
/**
* @return Collection
*/
public function getCollectionWithoutTemplateAttribute(): Collection
{
return new Collection();
}
public function getCollectionWithoutDocBlockAttribute(): Collection
{
return new Collection();
}
/**
* @return Collection<int, NonModel>
*/
public function getCollectionWithNonModelTemplateAttribute(): Collection
{
return new Collection();
}
/**
* @return Collection<Collection, CollectionModel<IntCollection, CollectionModel<int, NonModel>>>
*/
public function getCollectionWithNestedTemplateAttribute(): Collection
{
return new Collection();
}
}
@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels;
class CollectionModel
{
}
@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels;
class NonModel
{
}
@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
class Test extends AbstractModelsCommand
{
public function test(): void
{
$command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [
'--write-mixin' => true,
]);
$this->assertSame(0, $tester->getStatusCode());
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot();
}
}
@@ -0,0 +1,85 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\Models;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
use Illuminate\Support\Collection as IntCollection;
/**
* @mixin IdeHelperWithCollection
*/
class WithCollection extends Model
{
/**
* @return Collection<int, string>
*/
public function getCollectionAttribute(): Collection
{
return new Collection();
}
/**
* @return Collection
*/
public function getCollectionWithoutTemplateAttribute(): Collection
{
return new Collection();
}
public function getCollectionWithoutDocBlockAttribute(): Collection
{
return new Collection();
}
/**
* @return Collection<int, NonModel>
*/
public function getCollectionWithNonModelTemplateAttribute(): Collection
{
return new Collection();
}
/**
* @return Collection<Collection, CollectionModel<IntCollection, CollectionModel<int, NonModel>>>
*/
public function getCollectionWithNestedTemplateAttribute(): Collection
{
return new Collection();
}
}
<?php
// @formatter:off
// phpcs:ignoreFile
/**
* A helper file for your Eloquent Models
* Copy the phpDocs from this file to the correct Model,
* And remove them from this file, to prevent double declarations.
*
* @author Barry vd. Heuvel <[email protected]>
*/
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\Models{
/**
*
*
* @property-read \Illuminate\Support\Collection<int, string> $collection
* @property-read \Illuminate\Support\Collection<\Illuminate\Support\Collection, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel<\Illuminate\Support\Collection, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel<int, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel>>> $collection_with_nested_template
* @property-read \Illuminate\Support\Collection<int, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel> $collection_with_non_model_template
* @property-read \Illuminate\Support\Collection $collection_without_doc_block
* @property-read \Illuminate\Support\Collection $collection_without_template
* @method static \Illuminate\Database\Eloquent\Builder|WithCollection newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|WithCollection newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|WithCollection query()
* @mixin \Eloquent
*/
#[\AllowDynamicProperties]
class IdeHelperWithCollection {}
}
@@ -13,9 +13,9 @@
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Models{ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Models{
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -26,36 +26,34 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -76,10 +74,10 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -152,8 +150,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTinyIntegerNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTinyIntegerNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedBigIntegerNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedDecimalNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedIntegerNotNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedIntegerNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedIntegerNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -8,9 +8,9 @@ use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExte
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -21,36 +21,34 @@ use Illuminate\Database\Eloquent\Model;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -71,10 +69,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -147,8 +145,6 @@ use Illuminate\Database\Eloquent\Model;
* @method static PostExternalQueryBuilder|Post whereTinyIntegerNullable($value) * @method static PostExternalQueryBuilder|Post whereTinyIntegerNullable($value)
* @method static PostExternalQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value) * @method static PostExternalQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static PostExternalQueryBuilder|Post whereUnsignedBigIntegerNullable($value) * @method static PostExternalQueryBuilder|Post whereUnsignedBigIntegerNullable($value)
* @method static PostExternalQueryBuilder|Post whereUnsignedDecimalNotNullable($value)
* @method static PostExternalQueryBuilder|Post whereUnsignedDecimalNullable($value)
* @method static PostExternalQueryBuilder|Post whereUnsignedIntegerNotNullable($value) * @method static PostExternalQueryBuilder|Post whereUnsignedIntegerNotNullable($value)
* @method static PostExternalQueryBuilder|Post whereUnsignedIntegerNullable($value) * @method static PostExternalQueryBuilder|Post whereUnsignedIntegerNullable($value)
* @method static PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -9,9 +9,9 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -22,36 +22,34 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -72,10 +70,10 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -149,8 +147,6 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedMediumIntegerNotNullable($value)
@@ -15,9 +15,9 @@ use Illuminate\Database\Query\Builder as QueryBuilder;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqn\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property CastType $char_not_nullable * @property CastType $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -28,36 +28,34 @@ use Illuminate\Support\Carbon;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -78,10 +76,10 @@ use Illuminate\Support\Carbon;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -155,8 +153,6 @@ use Illuminate\Support\Carbon;
* @method static EloquentBuilder|Post whereTinyIntegerNullable($value) * @method static EloquentBuilder|Post whereTinyIntegerNullable($value)
* @method static EloquentBuilder|Post whereUnsignedBigIntegerNotNullable($value) * @method static EloquentBuilder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static EloquentBuilder|Post whereUnsignedBigIntegerNullable($value) * @method static EloquentBuilder|Post whereUnsignedBigIntegerNullable($value)
* @method static EloquentBuilder|Post whereUnsignedDecimalNotNullable($value)
* @method static EloquentBuilder|Post whereUnsignedDecimalNullable($value)
* @method static EloquentBuilder|Post whereUnsignedIntegerNotNullable($value) * @method static EloquentBuilder|Post whereUnsignedIntegerNotNullable($value)
* @method static EloquentBuilder|Post whereUnsignedIntegerNullable($value) * @method static EloquentBuilder|Post whereUnsignedIntegerNullable($value)
* @method static EloquentBuilder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static EloquentBuilder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -13,9 +13,9 @@
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Models{ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Models{
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -26,36 +26,34 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -76,10 +74,10 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -149,8 +147,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTinyIntegerNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTinyIntegerNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedBigIntegerNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedDecimalNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedIntegerNotNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedIntegerNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedIntegerNullable($value)
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -45,7 +45,7 @@ class Post extends Model
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models{ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models{
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models\FinalPost *
* *
* @property $someProp * @property $someProp
* @method someMethod(string $method) * @method someMethod(string $method)
@@ -60,11 +60,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models{ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models{
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models\Post *
* *
* @property $someProp * @property $someProp
* @method someMethod(string $method) * @method someMethod(string $method)
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -75,36 +75,34 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -125,10 +123,10 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -198,8 +196,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -9,9 +9,9 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenericsSyntaxDisabled\Models\Simple *
* *
* @property integer $id * @property int $id
* @property-read \Illuminate\Database\Eloquent\Collection|Simple[] $regularBelongsToMany * @property-read \Illuminate\Database\Eloquent\Collection|Simple[] $regularBelongsToMany
* @property-read int|null $regular_belongs_to_many_count * @property-read int|null $regular_belongs_to_many_count
* @property-read \Illuminate\Database\Eloquent\Collection|Simple[] $regularHasMany * @property-read \Illuminate\Database\Eloquent\Collection|Simple[] $regularHasMany
@@ -8,9 +8,9 @@ use DateTime;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models\Simple *
* *
* @property integer $id * @property int $id
* @property-read int|null $attribute_return_type_int_or_null * @property-read int|null $attribute_return_type_int_or_null
* @property-read array $attribute_returns_array * @property-read array $attribute_returns_array
* @property-read bool $attribute_returns_bool * @property-read bool $attribute_returns_bool
@@ -7,7 +7,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\NotIgnored *
* *
* @method static \Illuminate\Database\Eloquent\Builder|NotIgnored newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|NotIgnored newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|NotIgnored newQuery() * @method static \Illuminate\Database\Eloquent\Builder|NotIgnored newQuery()
@@ -19,6 +19,11 @@ class User extends Model implements Authenticatable
// TODO: Implement getAuthIdentifier() method. // TODO: Implement getAuthIdentifier() method.
} }
public function getAuthPasswordName()
{
// TODO: Implement getAuthPasswordName() method.
}
public function getAuthPassword() public function getAuthPassword()
{ {
// TODO: Implement getAuthPassword() method. // TODO: Implement getAuthPassword() method.
@@ -13,7 +13,7 @@
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Interfaces\Models{ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Interfaces\Models{
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Interfaces\Models\User *
* *
* @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|User newQuery() * @method static \Illuminate\Database\Eloquent\Builder|User newQuery()
@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;
class CustomCasterWithStaticReturnType implements CastsAttributes
{
public function get(Model $model, string $key, mixed $value, array $attributes): static
{
// TODO: Implement get() method.
}
public function set(Model $model, string $key, mixed $value, array $attributes): array
{
// TODO: Implement set() method.
}
}
@@ -15,6 +15,7 @@ use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Cas
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveDocblockReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveDocblockReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithReturnType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithReturnType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithStaticReturnType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithStaticDocblockReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithStaticDocblockReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithThisDocblockReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithThisDocblockReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\InboundAttributeCaster; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\InboundAttributeCaster;
@@ -26,6 +27,7 @@ class CustomCast extends Model
{ {
protected $casts = [ protected $casts = [
'casted_property_with_return_type' => CustomCasterWithReturnType::class, 'casted_property_with_return_type' => CustomCasterWithReturnType::class,
'casted_property_with_static_return_type' => CustomCasterWithStaticReturnType::class,
'casted_property_with_return_docblock' => CustomCasterWithDocblockReturn::class, 'casted_property_with_return_docblock' => CustomCasterWithDocblockReturn::class,
'casted_property_with_return_docblock_fqn' => CustomCasterWithDocblockReturnFqn::class, 'casted_property_with_return_docblock_fqn' => CustomCasterWithDocblockReturnFqn::class,
'casted_property_with_return_primitive' => CustomCasterWithPrimitiveReturn::class, 'casted_property_with_return_primitive' => CustomCasterWithPrimitiveReturn::class,
@@ -15,6 +15,7 @@ use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Cas
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveDocblockReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveDocblockReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithReturnType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithReturnType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithStaticReturnType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithStaticDocblockReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithStaticDocblockReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithThisDocblockReturn; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithThisDocblockReturn;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\InboundAttributeCaster; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\InboundAttributeCaster;
@@ -23,7 +24,7 @@ use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Cas
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Models\CustomCast *
* *
* @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_return_type * @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_return_type
* @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_return_docblock * @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_return_docblock
@@ -39,6 +40,7 @@ use Illuminate\Database\Eloquent\Model;
* @property ExtendedSelfCastingCasterWithStaticDocblockReturn $extended_casted_property_with_static_return_docblock * @property ExtendedSelfCastingCasterWithStaticDocblockReturn $extended_casted_property_with_static_return_docblock
* @property ExtendedSelfCastingCasterWithThisDocblockReturn $extended_casted_property_with_this_return_docblock * @property ExtendedSelfCastingCasterWithThisDocblockReturn $extended_casted_property_with_this_return_docblock
* @property SelfCastingCasterWithStaticDocblockReturn $casted_property_with_static_return_docblock_and_param * @property SelfCastingCasterWithStaticDocblockReturn $casted_property_with_static_return_docblock_and_param
* @property CustomCasterWithStaticReturnType $casted_property_with_static_return_type
* @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_castable * @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_castable
* @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_anonymous_cast * @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_anonymous_cast
* @property CastableWithoutReturnType $casted_property_without_return_type * @property CastableWithoutReturnType $casted_property_without_return_type
@@ -67,6 +69,7 @@ class CustomCast extends Model
{ {
protected $casts = [ protected $casts = [
'casted_property_with_return_type' => CustomCasterWithReturnType::class, 'casted_property_with_return_type' => CustomCasterWithReturnType::class,
'casted_property_with_static_return_type' => CustomCasterWithStaticReturnType::class,
'casted_property_with_return_docblock' => CustomCasterWithDocblockReturn::class, 'casted_property_with_return_docblock' => CustomCasterWithDocblockReturn::class,
'casted_property_with_return_docblock_fqn' => CustomCasterWithDocblockReturnFqn::class, 'casted_property_with_return_docblock_fqn' => CustomCasterWithDocblockReturnFqn::class,
'casted_property_with_return_primitive' => CustomCasterWithPrimitiveReturn::class, 'casted_property_with_return_primitive' => CustomCasterWithPrimitiveReturn::class,
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\MagicWhere\Model
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\MagicWhere\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -20,36 +20,34 @@ use Illuminate\Database\Eloquent\Model;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -70,10 +68,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -71,7 +71,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Model
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Models\Simple *
* *
* @property int $id * @property int $id
* @property-read string $custom * @property-read string $custom
@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Morphs\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
class Morphs extends Model
{
public function relationMorphTo(): MorphTo
{
return $this->morphTo();
}
public function nullableRelationMorphTo(): MorphTo
{
return $this->morphTo();
}
}
@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Morphs;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
class Test extends AbstractModelsCommand
{
public function test(): void
{
$command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [
'--write' => true,
]);
$this->assertSame(0, $tester->getStatusCode());
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot();
}
}
@@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Morphs\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
/**
*
*
* @property string $relation_morph_to_type
* @property int $relation_morph_to_id
* @property string|null $nullable_relation_morph_to_type
* @property int|null $nullable_relation_morph_to_id
* @property-read Model|\Eloquent|null $nullableRelationMorphTo
* @property-read Model|\Eloquent $relationMorphTo
* @method static \Illuminate\Database\Eloquent\Builder|Morphs newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Morphs newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Morphs query()
* @method static \Illuminate\Database\Eloquent\Builder|Morphs whereNullableRelationMorphToId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Morphs whereNullableRelationMorphToType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Morphs whereRelationMorphToId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Morphs whereRelationMorphToType($value)
* @mixin \Eloquent
*/
class Morphs extends Model
{
public function relationMorphTo(): MorphTo
{
return $this->morphTo();
}
public function nullableRelationMorphTo(): MorphTo
{
return $this->morphTo();
}
}
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\PHPStormNoInspec
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\PHPStormNoInspection\Models\Simple *
* *
* @property integer $id * @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple query() * @method static \Illuminate\Database\Eloquent\Builder|Simple query()
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\PHPStormNoInspec
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\PHPStormNoInspection\Models\Simple *
* *
* @property integer $id * @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple query() * @method static \Illuminate\Database\Eloquent\Builder|Simple query()
@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots\CustomPivot;
use Illuminate\Database\Eloquent\Model;
class ModelWithPivot extends Model
{
public function relationWithCustomPivot()
{
return $this->belongsToMany(ModelwithPivot::class)
->using(CustomPivot::class)
->as('customAccessor');
}
}
@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots;
use Illuminate\Database\Eloquent\Relations\Pivot;
class CustomPivot extends Pivot
{
}
@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
class Test extends AbstractModelsCommand
{
public function test(): void
{
$command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [
'--write' => true,
]);
$this->assertSame(0, $tester->getStatusCode());
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot();
}
}
@@ -0,0 +1,48 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots\CustomPivot;
use Illuminate\Database\Eloquent\Model;
/**
*
*
* @property-read CustomPivot $customAccessor
* @property-read \Illuminate\Database\Eloquent\Collection<int, ModelWithPivot> $relationWithCustomPivot
* @property-read int|null $relation_with_custom_pivot_count
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot query()
* @mixin \Eloquent
*/
class ModelWithPivot extends Model
{
public function relationWithCustomPivot()
{
return $this->belongsToMany(ModelwithPivot::class)
->using(CustomPivot::class)
->as('customAccessor');
}
}
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots;
use Illuminate\Database\Eloquent\Relations\Pivot;
/**
*
*
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot query()
* @mixin \Eloquent
*/
class CustomPivot extends Pivot
{
}
@@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
class Post extends PostParent
{
public function scopePublic($query)
{
return $query;
}
}
@@ -0,0 +1,15 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
use Illuminate\Database\Eloquent\Model;
class PostParent extends Model
{
public function scopeActive($query)
{
return $query;
}
}
@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
class Test extends AbstractModelsCommand
{
public function test(): void
{
$command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [
'--write' => true,
]);
$this->assertSame(0, $tester->getStatusCode());
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot();
}
}
@@ -0,0 +1,189 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
/**
*
*
* @property int $id
* @property string|null $char_nullable
* @property string $char_not_nullable
* @property string|null $string_nullable
* @property string $string_not_nullable
* @property string|null $text_nullable
* @property string $text_not_nullable
* @property string|null $medium_text_nullable
* @property string $medium_text_not_nullable
* @property string|null $long_text_nullable
* @property string $long_text_not_nullable
* @property int|null $integer_nullable
* @property int $integer_not_nullable
* @property int|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable
* @property int|null $small_integer_nullable
* @property int $small_integer_not_nullable
* @property int|null $medium_integer_nullable
* @property int $medium_integer_not_nullable
* @property int|null $big_integer_nullable
* @property int $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable
* @property float $float_not_nullable
* @property float|null $double_nullable
* @property float $double_not_nullable
* @property string|null $decimal_nullable
* @property string $decimal_not_nullable
* @property int|null $boolean_nullable
* @property int $boolean_not_nullable
* @property string|null $enum_nullable
* @property string $enum_not_nullable
* @property string|null $json_nullable
* @property string $json_not_nullable
* @property string|null $jsonb_nullable
* @property string $jsonb_not_nullable
* @property string|null $date_nullable
* @property string $date_not_nullable
* @property string|null $datetime_nullable
* @property string $datetime_not_nullable
* @property string|null $datetimetz_nullable
* @property string $datetimetz_not_nullable
* @property string|null $time_nullable
* @property string $time_not_nullable
* @property string|null $timetz_nullable
* @property string $timetz_not_nullable
* @property string|null $timestamp_nullable
* @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable
* @property int|null $year_nullable
* @property int $year_not_nullable
* @property string|null $binary_nullable
* @property string $binary_not_nullable
* @property string|null $uuid_nullable
* @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable
* @property string $ipaddress_not_nullable
* @property string|null $macaddress_nullable
* @property string $macaddress_not_nullable
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @method static \Illuminate\Database\Eloquent\Builder|Post active()
* @method static \Illuminate\Database\Eloquent\Builder|Post newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Post newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Post public()
* @method static \Illuminate\Database\Eloquent\Builder|Post query()
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value)
* @mixin \Eloquent
*/
class Post extends PostParent
{
public function scopePublic($query)
{
return $query;
}
}
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
use Illuminate\Database\Eloquent\Model;
/**
*
*
* @method static \Illuminate\Database\Eloquent\Builder|PostParent active()
* @method static \Illuminate\Database\Eloquent\Builder|PostParent newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PostParent newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PostParent query()
* @mixin \Eloquent
*/
class PostParent extends Model
{
public function scopeActive($query)
{
return $query;
}
}
@@ -8,9 +8,9 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\RelationCountProperties\Models\Post *
* *
* @property integer $id * @property int $id
* @property string|null $char_nullable * @property string|null $char_nullable
* @property string $char_not_nullable * @property string $char_not_nullable
* @property string|null $string_nullable * @property string|null $string_nullable
@@ -21,36 +21,34 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
* @property string $medium_text_not_nullable * @property string $medium_text_not_nullable
* @property string|null $long_text_nullable * @property string|null $long_text_nullable
* @property string $long_text_not_nullable * @property string $long_text_not_nullable
* @property integer|null $integer_nullable * @property int|null $integer_nullable
* @property integer $integer_not_nullable * @property int $integer_not_nullable
* @property integer|null $tiny_integer_nullable * @property int|null $tiny_integer_nullable
* @property integer $tiny_integer_not_nullable * @property int $tiny_integer_not_nullable
* @property integer|null $small_integer_nullable * @property int|null $small_integer_nullable
* @property integer $small_integer_not_nullable * @property int $small_integer_not_nullable
* @property integer|null $medium_integer_nullable * @property int|null $medium_integer_nullable
* @property integer $medium_integer_not_nullable * @property int $medium_integer_not_nullable
* @property integer|null $big_integer_nullable * @property int|null $big_integer_nullable
* @property integer $big_integer_not_nullable * @property int $big_integer_not_nullable
* @property integer|null $unsigned_integer_nullable * @property int|null $unsigned_integer_nullable
* @property integer $unsigned_integer_not_nullable * @property int $unsigned_integer_not_nullable
* @property integer|null $unsigned_tiny_integer_nullable * @property int|null $unsigned_tiny_integer_nullable
* @property integer $unsigned_tiny_integer_not_nullable * @property int $unsigned_tiny_integer_not_nullable
* @property integer|null $unsigned_small_integer_nullable * @property int|null $unsigned_small_integer_nullable
* @property integer $unsigned_small_integer_not_nullable * @property int $unsigned_small_integer_not_nullable
* @property integer|null $unsigned_medium_integer_nullable * @property int|null $unsigned_medium_integer_nullable
* @property integer $unsigned_medium_integer_not_nullable * @property int $unsigned_medium_integer_not_nullable
* @property integer|null $unsigned_big_integer_nullable * @property int|null $unsigned_big_integer_nullable
* @property integer $unsigned_big_integer_not_nullable * @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable * @property float|null $float_nullable
* @property float $float_not_nullable * @property float $float_not_nullable
* @property float|null $double_nullable * @property float|null $double_nullable
* @property float $double_not_nullable * @property float $double_not_nullable
* @property string|null $decimal_nullable * @property string|null $decimal_nullable
* @property string $decimal_not_nullable * @property string $decimal_not_nullable
* @property string|null $unsigned_decimal_nullable * @property int|null $boolean_nullable
* @property string $unsigned_decimal_not_nullable * @property int $boolean_not_nullable
* @property integer|null $boolean_nullable
* @property integer $boolean_not_nullable
* @property string|null $enum_nullable * @property string|null $enum_nullable
* @property string $enum_not_nullable * @property string $enum_not_nullable
* @property string|null $json_nullable * @property string|null $json_nullable
@@ -71,10 +69,10 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property integer|null $year_nullable * @property int|null $year_nullable
* @property integer $year_not_nullable * @property int $year_not_nullable
* @property mixed|null $binary_nullable * @property string|null $binary_nullable
* @property mixed $binary_not_nullable * @property string $binary_not_nullable
* @property string|null $uuid_nullable * @property string|null $uuid_nullable
* @property string $uuid_not_nullable * @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable * @property string|null $ipaddress_nullable
@@ -145,8 +143,6 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -8,13 +8,13 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\BelongsToVariation *
* *
* @property integer $id * @property int $id
* @property integer $not_null_column_with_foreign_key_constraint * @property int $not_null_column_with_foreign_key_constraint
* @property integer $not_null_column_with_no_foreign_key_constraint * @property int $not_null_column_with_no_foreign_key_constraint
* @property integer|null $nullable_column_with_foreign_key_constraint * @property int|null $nullable_column_with_foreign_key_constraint
* @property integer|null $nullable_column_with_no_foreign_key_constraint * @property int|null $nullable_column_with_no_foreign_key_constraint
* @property-read BelongsToVariation $notNullColumnWithForeignKeyConstraint * @property-read BelongsToVariation $notNullColumnWithForeignKeyConstraint
* @property-read BelongsToVariation|null $notNullColumnWithNoForeignKeyConstraint * @property-read BelongsToVariation|null $notNullColumnWithNoForeignKeyConstraint
* @property-read BelongsToVariation|null $nullableColumnWithForeignKeyConstraint * @property-read BelongsToVariation|null $nullableColumnWithForeignKeyConstraint
@@ -61,13 +61,13 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\CompositeBelongsToVariation *
* *
* @property integer $id * @property int $id
* @property integer $not_null_column_with_foreign_key_constraint * @property int $not_null_column_with_foreign_key_constraint
* @property integer $not_null_column_with_no_foreign_key_constraint * @property int $not_null_column_with_no_foreign_key_constraint
* @property integer|null $nullable_column_with_foreign_key_constraint * @property int|null $nullable_column_with_foreign_key_constraint
* @property integer|null $nullable_column_with_no_foreign_key_constraint * @property int|null $nullable_column_with_no_foreign_key_constraint
* @property-read CompositeBelongsToVariation $bothNonNullableWithForeignKeyConstraint * @property-read CompositeBelongsToVariation $bothNonNullableWithForeignKeyConstraint
* @property-read CompositeBelongsToVariation|null $nonNullableMixedWithoutForeignKeyConstraint * @property-read CompositeBelongsToVariation|null $nonNullableMixedWithoutForeignKeyConstraint
* @property-read CompositeBelongsToVariation|null $nullableMixedWithForeignKeyConstraint * @property-read CompositeBelongsToVariation|null $nullableMixedWithForeignKeyConstraint
@@ -132,9 +132,9 @@ use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\Relations\MorphToMany;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple *
* *
* @property integer $id * @property int $id
* @property-read Simple|null $relationBelongsTo * @property-read Simple|null $relationBelongsTo
* @property-read AnotherModel|null $relationBelongsToInAnotherNamespace * @property-read AnotherModel|null $relationBelongsToInAnotherNamespace
* @property-read \Illuminate\Database\Eloquent\Collection<int, Simple> $relationBelongsToMany * @property-read \Illuminate\Database\Eloquent\Collection<int, Simple> $relationBelongsToMany
@@ -35,18 +35,4 @@ class Test extends AbstractModelsCommand
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay()); $this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot(); $this->assertMatchesMockedSnapshot();
} }
public function testSmartReset(): void
{
$command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [
'--write' => true,
'--smart-reset' => true,
]);
$this->assertSame(0, $tester->getStatusCode());
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot();
}
} }
@@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Model;
* Text of existing phpdoc * Text of existing phpdoc
* *
* @property string $foo * @property string $foo
* @property integer $id * @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple query() * @method static \Illuminate\Database\Eloquent\Builder|Simple query()
@@ -7,9 +7,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartRes
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple * Text of existing phpdoc
* *
* @property integer $id * @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple query() * @method static \Illuminate\Database\Eloquent\Builder|Simple query()
@@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Model;
/** /**
* Text of existing phpdoc * Text of existing phpdoc
* *
* @property integer $id * @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple query() * @method static \Illuminate\Database\Eloquent\Builder|Simple query()
@@ -22,6 +22,7 @@ class SimpleCast extends Model
'cast_to_array' => 'array', 'cast_to_array' => 'array',
'cast_to_json' => 'json', 'cast_to_json' => 'json',
'cast_to_collection' => 'collection', 'cast_to_collection' => 'collection',
'cast_to_enum_collection' => 'collection',
'cast_to_date' => 'date', 'cast_to_date' => 'date',
'cast_to_datetime' => 'datetime', 'cast_to_datetime' => 'datetime',
'cast_to_date_serialization' => 'date:Y-m-d', 'cast_to_date_serialization' => 'date:Y-m-d',
@@ -7,17 +7,17 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SimpleCasts\Mode
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SimpleCasts\Models\SimpleCast *
* *
* @property integer $cast_to_int * @property int $cast_to_int
* @property integer $cast_to_integer * @property int $cast_to_integer
* @property float $cast_to_real * @property float $cast_to_real
* @property float $cast_to_float * @property float $cast_to_float
* @property float $cast_to_double * @property float $cast_to_double
* @property string $cast_to_decimal * @property string $cast_to_decimal
* @property string $cast_to_string * @property string $cast_to_string
* @property boolean $cast_to_bool * @property bool $cast_to_bool
* @property boolean $cast_to_boolean * @property bool $cast_to_boolean
* @property object $cast_to_object * @property object $cast_to_object
* @property array $cast_to_array * @property array $cast_to_array
* @property array $cast_to_json * @property array $cast_to_json
@@ -32,7 +32,7 @@ use Illuminate\Database\Eloquent\Model;
* @property \Carbon\CarbonImmutable $cast_to_immutable_custom_datetime * @property \Carbon\CarbonImmutable $cast_to_immutable_custom_datetime
* @property \Carbon\CarbonImmutable $cast_to_immutable_datetime * @property \Carbon\CarbonImmutable $cast_to_immutable_datetime
* @property \Carbon\CarbonImmutable $cast_to_immutable_datetime_serialization * @property \Carbon\CarbonImmutable $cast_to_immutable_datetime_serialization
* @property integer $cast_to_timestamp * @property int $cast_to_timestamp
* @property mixed $cast_to_encrypted * @property mixed $cast_to_encrypted
* @property array $cast_to_encrypted_array * @property array $cast_to_encrypted_array
* @property \Illuminate\Support\Collection $cast_to_encrypted_collection * @property \Illuminate\Support\Collection $cast_to_encrypted_collection
@@ -88,6 +88,7 @@ class SimpleCast extends Model
'cast_to_array' => 'array', 'cast_to_array' => 'array',
'cast_to_json' => 'json', 'cast_to_json' => 'json',
'cast_to_collection' => 'collection', 'cast_to_collection' => 'collection',
'cast_to_enum_collection' => 'collection',
'cast_to_date' => 'date', 'cast_to_date' => 'date',
'cast_to_datetime' => 'datetime', 'cast_to_datetime' => 'datetime',
'cast_to_date_serialization' => 'date:Y-m-d', 'cast_to_date_serialization' => 'date:Y-m-d',
@@ -8,9 +8,9 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple *
* *
* @property integer $id * @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Simple onlyTrashed()
@@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Builder;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\UnionTypes\Models\UnionTypeModel *
* *
* @property-read string|int|null $foo * @property-read string|int|null $foo
* @property-read \Illuminate\Database\Eloquent\Collection<int, UnionTypeModel> $withUnionTypeReturn * @property-read \Illuminate\Database\Eloquent\Collection<int, UnionTypeModel> $withUnionTypeReturn
@@ -8,9 +8,9 @@ use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Variadic\Models\Simple *
* *
* @property integer $id * @property int $id
* @method static Builder|Simple newModelQuery() * @method static Builder|Simple newModelQuery()
* @method static Builder|Simple newQuery() * @method static Builder|Simple newQuery()
* @method static Builder|Simple query() * @method static Builder|Simple query()
@@ -24,6 +24,7 @@ class AdvancedCastsTable extends Migration
$table->string('cast_to_encrypted_json'); $table->string('cast_to_encrypted_json');
$table->string('cast_to_encrypted_object'); $table->string('cast_to_encrypted_object');
$table->string('cast_to_as_collection'); $table->string('cast_to_as_collection');
$table->string('cast_to_as_enum_collection');
$table->string('cast_to_as_array_object'); $table->string('cast_to_as_array_object');
}); });
} }
@@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class BackedAttributeTable extends Migration
{
public function up(): void
{
Schema::create('backed_attributes', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('name_read');
$table->string('name_write');
});
}
}
@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class MorphsTable extends Migration
{
public function up(): void
{
Schema::create('morphs', function (Blueprint $table) {
$table->morphs('relation_morph_to');
$table->nullableMorphs('nullable_relation_morph_to');
});
}
}
@@ -67,9 +67,6 @@ class PostsTable extends Migration
$table->decimal('decimal_nullable')->nullable(); $table->decimal('decimal_nullable')->nullable();
$table->decimal('decimal_not_nullable'); $table->decimal('decimal_not_nullable');
$table->unsignedDecimal('unsigned_decimal_nullable')->nullable();
$table->unsignedDecimal('unsigned_decimal_not_nullable');
$table->boolean('boolean_nullable')->nullable(); $table->boolean('boolean_nullable')->nullable();
$table->boolean('boolean_not_nullable'); $table->boolean('boolean_not_nullable');