Compare commits

...
29 Commits
Author SHA1 Message Date
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
Markus Podar bcc233280b [TEST] Show that custom phpdoc tags without space afterwards are unexpectedly changed (#981)
* tests: show that custom phpdoc tags without space afterwards are unexpectedly changed

This adds a test for the (current bug) behaviour of https://github.com/barryvdh/laravel-ide-helper/issues/666

If this ever gets fixed, this fails and needs to be adapted,
ensuring it won't break again.

* test: adapt now that #666 has been fixed
2024-02-16 21:38:43 +01:00
Barry vd. Heuvel 77831852bb Fix final class keyword (#1517)
* Fix final class keyword

* Add changelog
2024-02-15 15:23:20 +01:00
Markus Podar b47a118300 Adjust gitattribute (#1515)
and make up for the missing php-cs-fixer changes

The rest of the changes is just:
- sorted alphabetically
- align the `export-ignore` column
2024-02-14 14:49:24 +01:00
Barry vd. HeuvelandMarkus Podar dca3ebe81e Prepare 2.15 release (#1514)
* Prepare 2.15 release

* Prepare 2.15 release

* Add missing CHANGELOG.md entries

---------

Co-authored-by: Markus Podar <[email protected]>
2024-02-14 12:19:26 +01:00
Barry vd. Heuvel c119e89cf0 CS 2024-02-08 11:11:51 +01:00
GeoSot bc158a1b86 Add AllowDynamicProperties Attribute to cooperate with php8.2 deprecation (#1428)
* Add `AllowDynamicProperties` Attribute to cooperate with php8.2 deprecation

* lint snapshot
2024-02-08 11:09:30 +01:00
341c0ab89f feat: add support for AsCollection and AsArrayObject casts (#1393)
* feat: add support for AsCollection and AsArrayObject casts

* update changelog

* improve tests

* remove change

* composer fix-style

* snapshot

---------

Co-authored-by: Barry vd. Heuvel <[email protected]>
Co-authored-by: laravel-ide-helper <[email protected]>
2024-02-08 10:59:02 +01:00
Menthol cee441c87c Fix #1300 relation_return_type must take precedence if it is defined (#1394) 2024-02-08 09:48:26 +01:00
Barry vd. Heuvel 9343d3a1cc CS 2024-02-08 09:41:24 +01:00
f12d933ab1 Add support for non type-hinted attribute accessors with no backed property (#1411)
* Read Attribute type from parameter

* Update CHANGELOG.md

* Update ModelsCommand.php

---------

Co-authored-by: Barry vd. Heuvel <[email protected]>
Co-authored-by: Barry vd. Heuvel <[email protected]>
2024-02-08 09:39:10 +01:00
Norman Huth 4751420c9e Accept scope & scopes as relation (#1452) 2024-02-08 09:20:47 +01:00
Caleb White 6115100a0f Add support for composite keys (#1479)
* Add support for composite keys

* chore: add composite foreign key test
2024-02-08 07:42:27 +01:00
Sven 5c886fb653 Support the BINARY(...) database field type (#1434)
In singlestore we define some strings as
$table->char($columnName, 40)->charset('binary')->collation('binary');

In singelstore, this becomes 'BINARY(40)' instead of 'CHAR(40) CHARACTER SET 'binary' COLLATE 'binary'

This change would allow the generated proeperties to be 'string' instead of 'mixed', as using a string is correct in this case.
2024-02-07 22:01:48 +01:00
Barry vd. Heuvel 7d69dc6ea0 CS 2024-02-07 21:58:39 +01:00
Ben Poulson 62fc436c4c Reintroduce support for multi-db setups (#1426)
This snipet was lost in the 2.12.x => 2.13.x change. Needs to be reintroduced to allow those who use fully qualified db+table names. (Eg, `database.table`)
2024-02-07 21:55:16 +01:00
409bbf665b Fix unsetMethod in ModelsCommand (#1453)
* Fix unsetMethod in ModelsCommand

* composer fix-style

---------

Co-authored-by: Barry vd. Heuvel <[email protected]>
Co-authored-by: laravel-ide-helper <[email protected]>
2024-02-07 21:48:09 +01:00
Barry vd. Heuvel 2535f8e6ab Fix tests and CS 2024-02-07 21:44:48 +01:00
James Bhatta 16548fc878 Update README.md (#1451)
Fix intra page link for PHPDocs for models
2024-02-07 21:40:24 +01:00
Barry vd. Heuvel 872b470d9b Update CHANGELOG.md 2024-02-07 21:37:51 +01:00
72 changed files with 1287 additions and 789 deletions
+6 -6
View File
@@ -2,14 +2,14 @@
# https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html # https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
# Ignore all test and documentation with "export-ignore". # Ignore all test and documentation with "export-ignore".
/.editorconfig export-ignore
/.gitattributes export-ignore /.gitattributes export-ignore
/.github export-ignore /.github export-ignore
/.gitignore export-ignore /.gitignore export-ignore
/.editorconfig export-ignore /.php-cs-fixer.cache export-ignore
/.php-cs-fixer.php export-ignore
/.php-cs-fixer.tests.cache export-ignore
/phpunit.xml.dist export-ignore /phpunit.xml.dist export-ignore
/tests export-ignore
/.php_cs.common.php export-ignore
/.php_cs.dist export-ignore
/.php_cs.tests.php export-ignore
/psalm.xml export-ignore
/psalm-baseline.xml export-ignore /psalm-baseline.xml export-ignore
/psalm.xml export-ignore
/tests export-ignore
+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
+2 -2
View File
@@ -9,7 +9,7 @@ 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
@@ -17,7 +17,7 @@ jobs:
- 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
+55 -5
View File
@@ -2,15 +2,66 @@
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.14.0...master) [Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v3.0.0...master)
-------------- --------------
### Changed ### Fixed
- Removed support for Laravel 8 and therefore for PHP < 8.0 [#1504 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1504)
### Changed
### Added
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
------------------
### Fixed
- Fix final class keyword in wrong position [#1517 / barryvdh](https://github.com/barryvdh/laravel-ide-helper/pull/1517)
### Changed
### Added
2024-02-14, 2.15.0
------------------
### Fixed
- Fix case issue in `ModelsCommand::unsetMethod()` [#1453 / leo108](https://github.com/barryvdh/laravel-ide-helper/pull/1453)
- Fix non-facade classes will result in no autocomplete [#841 / netpok](https://github.com/barryvdh/laravel-ide-helper/pull/841)
- Skip swoole, otherwise fatal error [#1477 / TimoFrenzel](https://github.com/barryvdh/laravel-ide-helper/pull/1477)
- Fix vulnerability CVE-2021-43608 [#1392 / allanlaal](https://github.com/barryvdh/laravel-ide-helper/pull/1392)
- Reset foreignKeyConstraintsColumns on model loop start [#1461 / snmatsui](https://github.com/barryvdh/laravel-ide-helper/pull/1461)
- Accept scope & scopes as relation [#1452 / Muetze42](https://github.com/barryvdh/laravel-ide-helper/pull/1452)
- Fix #1300 relation_return_type must take precedence if it is defined [#1394 / menthol](https://github.com/barryvdh/laravel-ide-helper/pull/1394)
### Changed
- Disable inspections of helper files [#1486 / eidng8](https://github.com/barryvdh/laravel-ide-helper/pull/1486)
- Removed support for Laravel 8 and therefore for PHP < 8.0 [#1504 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1504)
### Added ### Added
- Add support for enum default arguments using enum cases. [#1464 / d8vjork](https://github.com/barryvdh/laravel-ide-helper/pull/1464) - Add support for enum default arguments using enum cases. [#1464 / d8vjork](https://github.com/barryvdh/laravel-ide-helper/pull/1464)
- Add support for real-time facades in the helper file. [#1455 / filipac](https://github.com/barryvdh/laravel-ide-helper/pull/1455)
- Add support for relations with composite keys. [#1479 / calebdw](https://github.com/barryvdh/laravel-ide-helper/pull/1479)
- Add support for attribute accessors with no backing field or type hinting [#1411 / pindab0ter](https://github.com/barryvdh/laravel-ide-helper/pull/1411).
- Add support for AsCollection and AsArrayObject casts [#1393 / pataar](https://github.com/barryvdh/laravel-ide-helper/pull/1393)
- Reintroduce support for multi-db setups [#1426 / benpoulson](https://github.com/barryvdh/laravel-ide-helper/pull/1426)
- Support the BINARY(...) database field type [#1434 / Sfonxs](https://github.com/barryvdh/laravel-ide-helper/pull/1434)
- Add AllowDynamicProperties Attribute to cooperate with php8.2 deprecation [#1428 / GeoSot](https://github.com/barryvdh/laravel-ide-helper/pull/1428)
2024-02-05, 2.14.0 2024-02-05, 2.14.0
------------------ ------------------
@@ -20,13 +71,12 @@ All notable changes to this project will be documented in this file.
- Refactor resolving of null information for custom casted attribute types [#1330 / wimski](https://github.com/barryvdh/laravel-ide-helper/pull/1330) - Refactor resolving of null information for custom casted attribute types [#1330 / wimski](https://github.com/barryvdh/laravel-ide-helper/pull/1330)
### Fixed ### Fixed
- Add support for attribute accessors marked as protected. [#1339 / pindab0ter](https://github.com/barryvdh/laravel-ide-helper/pull/1339)
- Catch exceptions when loading aliases [#1465 / dongm2ez](https://github.com/barryvdh/laravel-ide-helper/pull/1465) - Catch exceptions when loading aliases [#1465 / dongm2ez](https://github.com/barryvdh/laravel-ide-helper/pull/1465)
### Added ### Added
- Add support for nikic/php-parser 5 (next to 4) [#1502 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1502) - Add support for nikic/php-parser 5 (next to 4) [#1502 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1502)
- Add support for `immutable_date:*` and `immutable_datetime:*` casts. [#1380 / thekonz](https://github.com/barryvdh/laravel-ide-helper/pull/1380) - Add support for `immutable_date:*` and `immutable_datetime:*` casts. [#1380 / thekonz](https://github.com/barryvdh/laravel-ide-helper/pull/1380)
- Add support for real-time facades in the helper file. [pending PR](#) - Add support for attribute accessors marked as protected. [#1339 / pindab0ter](https://github.com/barryvdh/laravel-ide-helper/pull/1339)
2023-02-04, 2.13.0 2023-02-04, 2.13.0
------------------ ------------------
+3 -23
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)
@@ -72,7 +72,7 @@ If for some reason you want manually control this:
_Check out [this Laracasts video](https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/15) for a quick introduction/explanation!_ _Check out [this Laracasts video](https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/15) for a quick introduction/explanation!_
- `php artisan ide-helper:generate` - [PHPDoc generation for Laravel Facades ](#automatic-phpdoc-generation-for-laravel-facades) - `php artisan ide-helper:generate` - [PHPDoc generation for Laravel Facades ](#automatic-phpdoc-generation-for-laravel-facades)
- `php artisan ide-helper:models` - [PHPDocs for models](#automatic-PHPDocs-for-models) - `php artisan ide-helper:models` - [PHPDocs for models](#automatic-phpdocs-for-models)
- `php artisan ide-helper:meta` - [PhpStorm Meta file](#phpstorm-meta-for-container-instances) - `php artisan ide-helper:meta` - [PhpStorm Meta file](#phpstorm-meta-for-container-instances)
@@ -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.14-dev" "dev-master": "3.0-dev"
}, },
"laravel": { "laravel": {
"providers": [ "providers": [
+2 -31
View File
@@ -200,36 +200,6 @@ return [
], ],
/*
|--------------------------------------------------------------------------
| 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' => [
],
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Support for camel cased models | Support for camel cased models
@@ -322,7 +292,8 @@ return [
| |
| When using custom relation types its possible for the class name to not contain | When using custom relation types its possible for the class name to not contain
| the proper return type of the relation. The key of the array is the relationship | the proper return type of the relation. The key of the array is the relationship
| method name. The value of the array is the return type of the relation. | method name. The value of the array is the return type of the relation ('many'
| or 'morphTo').
| e.g. `'relationName' => 'many'`. | e.g. `'relationName' => 'many'`.
| |
*/ */
+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>
+102 -129
View File
@@ -17,12 +17,12 @@ 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\AsCollection;
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;
@@ -37,7 +37,9 @@ use Illuminate\Database\Eloquent\Relations\MorphOne;
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\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\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use phpDocumentor\Reflection\Types\ContextFactory; use phpDocumentor\Reflection\Types\ContextFactory;
@@ -103,7 +105,6 @@ 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;
/** /**
@@ -151,9 +152,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 =
@@ -216,8 +214,7 @@ class ModelsCommand extends Command
"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, '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',
@@ -241,8 +238,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 {
@@ -285,9 +280,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);
@@ -311,13 +304,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;
} }
@@ -387,7 +373,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':
@@ -403,7 +389,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':
@@ -418,9 +404,13 @@ class ModelsCommand extends Command
case 'immutable_datetime': case 'immutable_datetime':
$realType = '\Carbon\CarbonImmutable'; $realType = '\Carbon\CarbonImmutable';
break; break;
case AsCollection::class:
case 'collection': case 'collection':
$realType = '\Illuminate\Support\Collection'; $realType = '\Illuminate\Support\Collection';
break; break;
case AsArrayObject::class:
$realType = '\ArrayObject';
break;
default: default:
// In case of an optional custom cast parameter , only evaluate // In case of an optional custom cast parameter , only evaluate
// the `$type` until the `:` // the `$type` until the `:`
@@ -501,31 +491,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');
$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;
@@ -533,49 +506,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':
$type = 'string'; 'float', 'real', 'float4',
break; 'double', 'float8' => 'float',
case 'integer':
case 'bigint': default => 'string',
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(
@@ -583,8 +535,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
@@ -614,10 +566,7 @@ class ModelsCommand extends Command
// methods that resemble mutators but aren't. // methods that resemble mutators but aren't.
$reflections = array_filter($reflections, function (\ReflectionMethod $methodReflection) { $reflections = array_filter($reflections, function (\ReflectionMethod $methodReflection) {
return !$methodReflection->isPrivate() && !( return !$methodReflection->isPrivate() && !(
in_array( $methodReflection->getDeclaringClass()->getName() === Model::class && (
\Illuminate\Database\Eloquent\Concerns\HasAttributes::class,
$methodReflection->getDeclaringClass()->getTraitNames()
) && (
$methodReflection->getName() === 'setClassCastableAttribute' || $methodReflection->getName() === 'setClassCastableAttribute' ||
$methodReflection->getName() === 'setEnumCastableAttribute' $methodReflection->getName() === 'setEnumCastableAttribute'
) )
@@ -643,18 +592,15 @@ class ModelsCommand extends Command
$this->setProperty($name, $type, true, null, $comment); $this->setProperty($name, $type, true, null, $comment);
} }
} elseif ($isAttribute) { } elseif ($isAttribute) {
$name = Str::snake($method); $types = $this->getAttributeTypes($model, $reflection);
$types = $this->getAttributeReturnType($model, $reflection); $type = $this->getTypeInModel($model, $types->get('get') ?: $types->get('set')) ?: null;
$comment = $this->getCommentFromDocBlock($reflection); $this->setProperty(
Str::snake($method),
if ($types->has('get')) { $type,
$type = $this->getTypeInModel($model, $types['get']); $types->has('get'),
$this->setProperty($name, $type, true, null, $comment); $types->has('set'),
} $this->getCommentFromDocBlock($reflection)
);
if ($types->has('set')) {
$this->setProperty($name, null, null, true, $comment);
}
} elseif ( } elseif (
Str::startsWith($method, 'set') && Str::endsWith( Str::startsWith($method, 'set') && Str::endsWith(
$method, $method,
@@ -667,7 +613,7 @@ class ModelsCommand extends Command
$comment = $this->getCommentFromDocBlock($reflection); $comment = $this->getCommentFromDocBlock($reflection);
$this->setProperty($name, null, null, true, $comment); $this->setProperty($name, null, null, true, $comment);
} }
} elseif (Str::startsWith($method, 'scope') && $method !== 'scopeQuery') { } elseif (Str::startsWith($method, 'scope') && $method !== 'scopeQuery' && $method !== 'scope' && $method !== 'scopes') {
//Magic set<name>Attribute //Magic set<name>Attribute
$name = Str::camel(substr($method, 5)); $name = Str::camel(substr($method, 5));
if (!empty($name)) { if (!empty($name)) {
@@ -753,9 +699,14 @@ class ModelsCommand extends Command
get_class($relationObj->getRelated()) get_class($relationObj->getRelated())
); );
$relationReturnType = $this->getRelationReturnTypes()[$relation] ?? false;
if ( if (
strpos(get_class($relationObj), 'Many') !== false || $relationReturnType === 'many' ||
($this->getRelationReturnTypes()[$relation] ?? '') === 'many' (
!$relationReturnType &&
strpos(get_class($relationObj), 'Many') !== 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());
@@ -782,8 +733,11 @@ class ModelsCommand extends Command
); );
} }
} elseif ( } elseif (
$relation === 'morphTo' || $relationReturnType === 'morphTo' ||
($this->getRelationReturnTypes()[$relation] ?? '') === 'morphTo' (
!$relationReturnType &&
$relation === 'morphTo'
)
) { ) {
// Model isn't specified because relation is polymorphic // Model isn't specified because relation is polymorphic
$this->setProperty( $this->setProperty(
@@ -838,12 +792,17 @@ class ModelsCommand extends Command
$fkProp = $reflectionObj->getProperty('foreignKey'); $fkProp = $reflectionObj->getProperty('foreignKey');
$fkProp->setAccessible(true); $fkProp->setAccessible(true);
if ($relation === 'belongsTo') { foreach (Arr::wrap($fkProp->getValue($relationObj)) as $foreignKey) {
return isset($this->nullableColumns[$fkProp->getValue($relationObj)]) || if (isset($this->nullableColumns[$foreignKey])) {
!in_array($fkProp->getValue($relationObj), $this->foreignKeyConstraintsColumns, true); return true;
} }
return isset($this->nullableColumns[$fkProp->getValue($relationObj)]); if (!in_array($foreignKey, $this->foreignKeyConstraintsColumns, true)) {
return true;
}
}
return false;
} }
/** /**
@@ -892,7 +851,12 @@ class ModelsCommand extends Command
public function unsetMethod($name) public function unsetMethod($name)
{ {
unset($this->methods[strtolower($name)]); foreach ($this->methods as $k => $v) {
if (strtolower($k) === strtolower($name)) {
unset($this->methods[$k]);
return;
}
}
} }
public function getMethodType(Model $model, string $classType) public function getMethodType(Model $model, string $classType)
@@ -920,19 +884,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) {
@@ -1057,7 +1015,9 @@ class ModelsCommand extends Command
} }
$classname = $this->write_mixin ? $mixinClassName : $classname; $classname = $this->write_mixin ? $mixinClassName : $classname;
$output = "namespace {$namespace}{\n{$docComment}\n\t{$keyword}class {$classname} ";
$allowDynamicAttributes = $this->write_mixin ? "#[\AllowDynamicProperties]\n\t" : '';
$output = "namespace {$namespace}{\n{$docComment}\n\t{$allowDynamicAttributes}{$keyword}class {$classname} ";
if (!$this->write_mixin) { if (!$this->write_mixin) {
$output .= "extends \Eloquent "; $output .= "extends \Eloquent ";
@@ -1176,7 +1136,10 @@ class ModelsCommand extends Command
return $this->laravel['config']->get('ide-helper.model_camel_case_properties', false); return $this->laravel['config']->get('ide-helper.model_camel_case_properties', false);
} }
protected function getAttributeReturnType(Model $model, \ReflectionMethod $reflectionMethod): Collection /**
* @psalm-suppress NoValue
*/
protected function getAttributeTypes(Model $model, \ReflectionMethod $reflectionMethod): Collection
{ {
// Private/protected ReflectionMethods require setAccessible prior to PHP 8.1 // Private/protected ReflectionMethods require setAccessible prior to PHP 8.1
$reflectionMethod->setAccessible(true); $reflectionMethod->setAccessible(true);
@@ -1184,13 +1147,25 @@ class ModelsCommand extends Command
/** @var Attribute $attribute */ /** @var Attribute $attribute */
$attribute = $reflectionMethod->invoke($model); $attribute = $reflectionMethod->invoke($model);
return collect([ $methods = new Collection();
'get' => $attribute->get ? optional(new \ReflectionFunction($attribute->get))->getReturnType() : null,
'set' => $attribute->set ? optional(new \ReflectionFunction($attribute->set))->getReturnType() : null, if ($attribute->get) {
]) $methods['get'] = optional(new \ReflectionFunction($attribute->get))->getReturnType();
->filter() }
if ($attribute->set) {
$function = optional(new \ReflectionFunction($attribute->set));
if ($function->getNumberOfParameters() === 0) {
$methods['set'] = null;
} else {
$methods['set'] = $function->getParameters()[0]->getType();
}
}
return $methods
->map(function ($type) { ->map(function ($type) {
if ($type instanceof \ReflectionUnionType) { if ($type === null) {
$types = collect([]);
} elseif ($type instanceof \ReflectionUnionType) {
$types = collect($type->getTypes()) $types = collect($type->getTypes())
/** @var ReflectionType $reflectionType */ /** @var ReflectionType $reflectionType */
->map(function ($reflectionType) { ->map(function ($reflectionType) {
@@ -1201,7 +1176,7 @@ class ModelsCommand extends Command
$types = collect($this->extractReflectionTypes($type)); $types = collect($this->extractReflectionTypes($type));
} }
if ($type->allowsNull()) { if ($type && $type->allowsNull()) {
$types->push('null'); $types->push('null');
} }
@@ -1451,8 +1426,7 @@ class ModelsCommand extends Command
{ {
$reflection = $model instanceof ReflectionClass $reflection = $model instanceof ReflectionClass
? $model ? $model
: new ReflectionObject($model) : new ReflectionObject($model);
;
$className = trim($className, '\\'); $className = trim($className, '\\');
$writingToExternalFile = !$this->write || $this->write_mixin; $writingToExternalFile = !$this->write || $this->write_mixin;
@@ -1641,14 +1615,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;
} }
} }
+3 -2
View File
@@ -195,10 +195,11 @@ class Generator
return $facades; return $facades;
} }
protected function getFullyQualifiedClassNameInFile(string $path) { protected function getFullyQualifiedClassNameInFile(string $path)
{
$contents = file_get_contents($path); $contents = file_get_contents($path);
$parsers = new Php7(new Emulative); $parsers = new Php7(new Emulative());
$parsed = collect($parsers->parse($contents) ?: []); $parsed = collect($parsers->parse($contents) ?: []);
@@ -0,0 +1,29 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Models;
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Casts\AsCollection;
use Illuminate\Database\Eloquent\Model;
class AdvancedCast extends Model
{
protected $casts = [
'cast_to_date_serialization' => 'date:Y-m-d',
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
'cast_to_immutable_date' => 'immutable_date',
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
'cast_to_immutable_datetime' => 'immutable_datetime',
'cast_to_timestamp' => 'timestamp',
'cast_to_encrypted' => 'encrypted',
'cast_to_encrypted_array' => 'encrypted:array',
'cast_to_encrypted_collection' => 'encrypted:collection',
'cast_to_encrypted_json' => 'encrypted:json',
'cast_to_encrypted_object' => 'encrypted:object',
'cast_to_as_collection' => AsCollection::class,
'cast_to_as_array_object' => AsArrayObject::class,
];
}
@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts;
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,65 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AdvancedCasts\Models;
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Casts\AsCollection;
use Illuminate\Database\Eloquent\Model;
/**
*
*
* @property \Illuminate\Support\Carbon $cast_to_date_serialization
* @property \Illuminate\Support\Carbon $cast_to_datetime_serialization
* @property \Illuminate\Support\Carbon $cast_to_custom_datetime
* @property \Carbon\CarbonImmutable $cast_to_immutable_date
* @property \Carbon\CarbonImmutable $cast_to_immutable_custom_datetime
* @property \Carbon\CarbonImmutable $cast_to_immutable_datetime
* @property int $cast_to_timestamp
* @property mixed $cast_to_encrypted
* @property array $cast_to_encrypted_array
* @property \Illuminate\Support\Collection $cast_to_encrypted_collection
* @property array $cast_to_encrypted_json
* @property object $cast_to_encrypted_object
* @property \Illuminate\Support\Collection $cast_to_as_collection
* @property \ArrayObject $cast_to_as_array_object
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast query()
* @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 whereCastToCustomDatetime($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 whereCastToEncrypted($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToEncryptedArray($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToEncryptedCollection($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToEncryptedJson($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToEncryptedObject($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToImmutableCustomDatetime($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToImmutableDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToImmutableDatetime($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdvancedCast whereCastToTimestamp($value)
* @mixin \Eloquent
*/
class AdvancedCast extends Model
{
protected $casts = [
'cast_to_date_serialization' => 'date:Y-m-d',
'cast_to_datetime_serialization' => 'datetime:Y-m-d H:i:s',
'cast_to_custom_datetime' => 'custom_datetime:Y-m-d H:i:s',
'cast_to_immutable_date' => 'immutable_date',
'cast_to_immutable_custom_datetime' => 'immutable_custom_datetime:Y-m-d H:i:s',
'cast_to_immutable_datetime' => 'immutable_datetime',
'cast_to_timestamp' => 'timestamp',
'cast_to_encrypted' => 'encrypted',
'cast_to_encrypted_array' => 'encrypted:array',
'cast_to_encrypted_collection' => 'encrypted:collection',
'cast_to_encrypted_json' => 'encrypted:json',
'cast_to_encrypted_object' => 'encrypted:object',
'cast_to_as_collection' => AsCollection::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
@@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\Model;
class Simple extends Model class Simple extends Model
{ {
// With a backed property
protected function name(): Attribute protected function name(): Attribute
{ {
return new Attribute( return new Attribute(
@@ -16,11 +17,84 @@ class Simple extends Model
return $name; return $name;
}, },
function (?string $name): ?string { function (?string $name): ?string {
return $name === null ? null : ucfirst($name); return $name;
} }
); );
} }
// Without backed properties
protected function typeHintedGetAndSet(): Attribute
{
return new Attribute(
function (): ?string {
return $this->name;
},
function (?string $name) {
$this->name = $name;
}
);
}
protected function divergingTypeHintedGetAndSet(): Attribute
{
return new Attribute(
function (): int {
return strlen($this->name);
},
function (?string $name) {
$this->name = $name;
}
);
}
protected function typeHintedGet(): Attribute
{
return Attribute::get(function (): ?string {
return $this->name;
});
}
protected function typeHintedSet(): Attribute
{
return Attribute::set(function (?string $name) {
$this->name = $name;
});
}
protected function nonTypeHintedGetAndSet(): Attribute
{
return new Attribute(
function () {
return $this->name;
},
function ($name) {
$this->name = $name;
}
);
}
protected function nonTypeHintedGet(): Attribute
{
return Attribute::get(function () {
return $this->name;
});
}
protected function nonTypeHintedSet(): Attribute
{
return Attribute::set(function ($name) {
$this->name = $name;
});
}
protected function parameterlessSet(): Attribute
{
return Attribute::set(function () {
$this->name = null;
});
}
/** /**
* ide-helper does not recognize this method being an Attribute * ide-helper does not recognize this method being an Attribute
* because the method has no actual return type; * because the method has no actual return type;
@@ -8,10 +8,18 @@ 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 int $diverging_type_hinted_get_and_set
* @property string|null $name * @property string|null $name
* @property-read mixed $non_type_hinted_get
* @property mixed $non_type_hinted_get_and_set
* @property-write mixed $non_type_hinted_set
* @property-write mixed $parameterless_set
* @property-read string|null $type_hinted_get
* @property string|null $type_hinted_get_and_set
* @property-write string|null $type_hinted_set
* @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()
@@ -20,6 +28,7 @@ use Illuminate\Database\Eloquent\Model;
*/ */
class Simple extends Model class Simple extends Model
{ {
// With a backed property
protected function name(): Attribute protected function name(): Attribute
{ {
return new Attribute( return new Attribute(
@@ -27,11 +36,84 @@ class Simple extends Model
return $name; return $name;
}, },
function (?string $name): ?string { function (?string $name): ?string {
return $name === null ? null : ucfirst($name); return $name;
} }
); );
} }
// Without backed properties
protected function typeHintedGetAndSet(): Attribute
{
return new Attribute(
function (): ?string {
return $this->name;
},
function (?string $name) {
$this->name = $name;
}
);
}
protected function divergingTypeHintedGetAndSet(): Attribute
{
return new Attribute(
function (): int {
return strlen($this->name);
},
function (?string $name) {
$this->name = $name;
}
);
}
protected function typeHintedGet(): Attribute
{
return Attribute::get(function (): ?string {
return $this->name;
});
}
protected function typeHintedSet(): Attribute
{
return Attribute::set(function (?string $name) {
$this->name = $name;
});
}
protected function nonTypeHintedGetAndSet(): Attribute
{
return new Attribute(
function () {
return $this->name;
},
function ($name) {
$this->name = $name;
}
);
}
protected function nonTypeHintedGet(): Attribute
{
return Attribute::get(function () {
return $this->name;
});
}
protected function nonTypeHintedSet(): Attribute
{
return Attribute::set(function ($name) {
$this->name = $name;
});
}
protected function parameterlessSet(): Attribute
{
return Attribute::set(function () {
$this->name = null;
});
}
/** /**
* ide-helper does not recognize this method being an Attribute * ide-helper does not recognize this method being an Attribute
* because the method has no actual return type; * because the method has no actual return type;
@@ -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
@@ -0,0 +1,19 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomPhpdocTags\Models;
use Illuminate\Database\Eloquent\Model;
/**
* The `@SuppressWarnings` tag below contains no space before the `(` but when
* the class phpdoc is written back, one is inserted.
*
* @link https://github.com/barryvdh/laravel-ide-helper/issues/666
*
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
*/
class Simple extends Model
{
}
@@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomPhpdocTags;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
class Test extends AbstractModelsCommand
{
/**
* This test makes sure that custom phpdoc tags are not mangled, e.g.
* there are no spaces inserted etc.
*
* @link https://github.com/barryvdh/laravel-ide-helper/issues/666
*/
public function testNoSpaceAfterCustomPhpdocTag(): 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,24 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomPhpdocTags\Models;
use Illuminate\Database\Eloquent\Model;
/**
* The `@SuppressWarnings` tag below contains no space before the `(` but when
* the class phpdoc is written back, one is inserted.
*
* @link https://github.com/barryvdh/laravel-ide-helper/issues/666
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
* @property int $id
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
* @mixin \Eloquent
*/
class Simple extends Model
{
}
@@ -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()
@@ -1,5 +1,7 @@
<?php <?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums; namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums;
enum PostStatus enum PostStatus
@@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Models; namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums\PostStatus; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums\PostStatus;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
class Post extends Model class Post extends Model
{ {
@@ -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, [
@@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Models; namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums\PostStatus; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums\PostStatus;
use Illuminate\Database\Eloquent\Builder;
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 Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWit
* @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 Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWit
* @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 Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWit
* @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)
@@ -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)
@@ -0,0 +1,16 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models;
use Illuminate\Database\Eloquent\Model;
/**
* @property $someProp
* @method someMethod(string $method)
* @mixin IdeHelperPost
*/
final class FinalPost extends Model
{
}
@@ -6,6 +6,22 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/**
* @property $someProp
* @method someMethod(string $method)
* @mixin IdeHelperFinalPost
*/
final class FinalPost extends Model
{
}
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models;
use Illuminate\Database\Eloquent\Model;
/** /**
* @property $someProp * @property $someProp
* @method someMethod(string $method) * @method someMethod(string $method)
@@ -29,11 +45,26 @@ 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\Post *
* *
* @property $someProp * @property $someProp
* @method someMethod(string $method) * @method someMethod(string $method)
* @property integer $id * @method static \Illuminate\Database\Eloquent\Builder|FinalPost newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|FinalPost newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|FinalPost query()
* @mixin \Eloquent
*/
#[\AllowDynamicProperties]
final class IdeHelperFinalPost {}
}
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models{
/**
*
*
* @property $someProp
* @method someMethod(string $method)
* @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
@@ -44,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
@@ -94,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
@@ -167,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)
@@ -184,6 +211,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value) * @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value)
* @mixin \Eloquent * @mixin \Eloquent
*/ */
#[\AllowDynamicProperties]
class IdeHelperPost {} class IdeHelperPost {}
} }
@@ -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()
@@ -23,7 +23,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
@@ -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
@@ -12,6 +12,6 @@ class UnsetMethod implements ModelHookInterface
{ {
public function run(ModelsCommand $command, Model $model): void public function run(ModelsCommand $command, Model $model): void
{ {
$command->unsetMethod('query'); $command->unsetMethod('newmodelquery');
} }
} }
@@ -71,13 +71,13 @@ 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
* @method static \Illuminate\Database\Eloquent\Builder|Simple custom($custom) * @method static \Illuminate\Database\Eloquent\Builder|Simple custom($custom)
* @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 whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
* @mixin \Eloquent * @mixin \Eloquent
*/ */
@@ -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()
@@ -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)
@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class CompositeBelongsToVariation extends Model
{
public $table = 'belongs_to_variations';
public function bothNonNullableWithForeignKeyConstraint(): BelongsTo
{
// Note, duplicating the keys here for simplicity.
return $this->belongsTo(
self::class,
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
);
}
public function nonNullableMixedWithoutForeignKeyConstraint(): BelongsTo
{
return $this->belongsTo(
self::class,
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_no_foreign_key_constraint'],
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_no_foreign_key_constraint'],
);
}
public function nullableMixedWithForeignKeyConstraint(): BelongsTo
{
return $this->belongsTo(
self::class,
['nullable_column_with_no_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
['nullable_column_with_no_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
);
}
}
@@ -107,4 +107,9 @@ class Simple extends Model
{ {
return $this->testToAnyMorphedRelation(Simple::class); return $this->testToAnyMorphedRelation(Simple::class);
} }
public function relationSampleToBadlyNamedNotManyRelation()
{
return $this->testToBadlyNamedNotManyRelation(Simple::class);
}
} }
@@ -6,7 +6,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations;
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 Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyMorphedRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyRelationType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToBadlyNamedNotManyRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Config;
@@ -22,11 +24,13 @@ class Test extends AbstractModelsCommand
'testToManyRelation' => SampleToManyRelationType::class, 'testToManyRelation' => SampleToManyRelationType::class,
'testToAnyRelation' => SampleToAnyRelationType::class, 'testToAnyRelation' => SampleToAnyRelationType::class,
'testToAnyMorphedRelation' => SampleToAnyMorphedRelationType::class, 'testToAnyMorphedRelation' => SampleToAnyMorphedRelationType::class,
'testToBadlyNamedNotManyRelation' => SampleToBadlyNamedNotManyRelationType::class,
]); ]);
Config::set('ide-helper.additional_relation_return_types', [ Config::set('ide-helper.additional_relation_return_types', [
'testToAnyRelation' => 'many', 'testToAnyRelation' => 'many',
'testToAnyMorphedRelation' => 'morphTo', 'testToAnyMorphedRelation' => 'morphTo',
'testToBadlyNamedNotManyRelation' => 'one',
]); ]);
} }
@@ -6,6 +6,7 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Traits
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyMorphedRelationType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyMorphedRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyRelationType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToAnyRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToBadlyNamedNotManyRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
@@ -34,4 +35,10 @@ trait HasTestRelations
$instance = $this->newRelatedInstance($related); $instance = $this->newRelatedInstance($related);
return new SampleToAnyMorphedRelationType($instance->newQuery(), $this); return new SampleToAnyMorphedRelationType($instance->newQuery(), $this);
} }
public function testToBadlyNamedNotManyRelation($related)
{
$instance = $this->newRelatedInstance($related);
return new SampleToBadlyNamedNotManyRelationType($instance->newQuery(), $this);
}
} }
@@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Concerns\SupportsDefaultModels;
use Illuminate\Database\Eloquent\Relations\Relation;
/**
* Sample for custom relation
*
* the relation is a big fake and only for testing of the docblock generation
*
* @package Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations
*/
class SampleToBadlyNamedNotManyRelationType extends Relation
{
use SupportsDefaultModels;
public function addConstraints()
{
// Fake
}
public function addEagerConstraints(array $models)
{
// Fake
}
public function initRelation(array $models, $relation)
{
// Fake
}
public function match(array $models, Collection $results, $relation)
{
// Fake
}
public function getResults()
{
// Fake
}
protected function newRelatedInstanceFor(Model $parent)
{
// Fake
}
}
@@ -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 integer $not_null_column_with_foreign_key_constraint * @property int $id
* @property integer $not_null_column_with_no_foreign_key_constraint * @property int $not_null_column_with_foreign_key_constraint
* @property integer|null $nullable_column_with_foreign_key_constraint * @property int $not_null_column_with_no_foreign_key_constraint
* @property integer|null $nullable_column_with_no_foreign_key_constraint * @property int|null $nullable_column_with_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
@@ -57,6 +57,68 @@ declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models; namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
*
*
* @property int $id
* @property int $not_null_column_with_foreign_key_constraint
* @property int $not_null_column_with_no_foreign_key_constraint
* @property int|null $nullable_column_with_foreign_key_constraint
* @property int|null $nullable_column_with_no_foreign_key_constraint
* @property-read CompositeBelongsToVariation $bothNonNullableWithForeignKeyConstraint
* @property-read CompositeBelongsToVariation|null $nonNullableMixedWithoutForeignKeyConstraint
* @property-read CompositeBelongsToVariation|null $nullableMixedWithForeignKeyConstraint
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation query()
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation whereNotNullColumnWithForeignKeyConstraint($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation whereNotNullColumnWithNoForeignKeyConstraint($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation whereNullableColumnWithForeignKeyConstraint($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompositeBelongsToVariation whereNullableColumnWithNoForeignKeyConstraint($value)
* @mixin \Eloquent
*/
class CompositeBelongsToVariation extends Model
{
public $table = 'belongs_to_variations';
public function bothNonNullableWithForeignKeyConstraint(): BelongsTo
{
// Note, duplicating the keys here for simplicity.
return $this->belongsTo(
self::class,
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
);
}
public function nonNullableMixedWithoutForeignKeyConstraint(): BelongsTo
{
return $this->belongsTo(
self::class,
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_no_foreign_key_constraint'],
['not_null_column_with_foreign_key_constraint', 'not_null_column_with_no_foreign_key_constraint'],
);
}
public function nullableMixedWithForeignKeyConstraint(): BelongsTo
{
return $this->belongsTo(
self::class,
['nullable_column_with_no_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
['nullable_column_with_no_foreign_key_constraint', 'not_null_column_with_foreign_key_constraint'],
);
}
}
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace\AnotherModel; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace\AnotherModel;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Traits\HasTestRelations; use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Traits\HasTestRelations;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -70,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
@@ -97,6 +159,7 @@ use Illuminate\Database\Eloquent\Relations\MorphToMany;
* @property-read Model|\Eloquent $relationSampleToAnyMorphedRelationType * @property-read Model|\Eloquent $relationSampleToAnyMorphedRelationType
* @property-read \Illuminate\Database\Eloquent\Collection<int, Simple> $relationSampleToAnyRelationType * @property-read \Illuminate\Database\Eloquent\Collection<int, Simple> $relationSampleToAnyRelationType
* @property-read int|null $relation_sample_to_any_relation_type_count * @property-read int|null $relation_sample_to_any_relation_type_count
* @property-read Simple $relationSampleToBadlyNamedNotManyRelation
* @property-read Simple $relationSampleToManyRelationType * @property-read Simple $relationSampleToManyRelationType
* @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()
@@ -195,4 +258,9 @@ class Simple extends Model
{ {
return $this->testToAnyMorphedRelation(Simple::class); return $this->testToAnyMorphedRelation(Simple::class);
} }
public function relationSampleToBadlyNamedNotManyRelation()
{
return $this->testToBadlyNamedNotManyRelation(Simple::class);
}
} }
@@ -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()
@@ -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 integer $cast_to_integer * @property int $cast_to_int
* @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
@@ -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()
@@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AdvancedCastsTable extends Migration
{
public function up(): void
{
Schema::create('advanced_casts', static function (Blueprint $table) {
$table->string('cast_to_date_serialization');
$table->string('cast_to_datetime_serialization');
$table->string('cast_to_custom_datetime');
$table->string('cast_to_immutable_date');
$table->string('cast_to_immutable_custom_datetime');
$table->string('cast_to_immutable_datetime');
$table->string('cast_to_timestamp');
$table->string('cast_to_encrypted');
$table->string('cast_to_encrypted_array');
$table->string('cast_to_encrypted_collection');
$table->string('cast_to_encrypted_json');
$table->string('cast_to_encrypted_object');
$table->string('cast_to_as_collection');
$table->string('cast_to_as_array_object');
});
}
}
@@ -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');