Compare commits

..
Author SHA1 Message Date
laravel-ide-helper 0a43deb16c composer fix-style 2024-02-07 20:33:52 +00:00
Barry vd. Heuvel e0ee7deccc Merge branch 'master' into fix-lowest-stability 2024-02-07 21:33:11 +01:00
Barry vd. Heuvel 0fe86fd042 minimu dbal 3.1 2024-02-07 19:51:34 +01:00
Barry vd. Heuvel 964c964296 Drop dbal v2 2024-02-07 19:48:53 +01:00
barryvdh eb28477bf4 normalize composer.json 2024-02-07 18:43:23 +00:00
Barry vd. Heuvel 89288a5770 Fix lowest stability 2024-02-07 19:42:57 +01:00
82 changed files with 776 additions and 1825 deletions
+11 -11
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 /phpunit.xml.dist export-ignore
/.php-cs-fixer.php export-ignore /tests export-ignore
/.php-cs-fixer.tests.cache export-ignore /.php_cs.common.php export-ignore
/phpunit.xml.dist export-ignore /.php_cs.dist export-ignore
/psalm-baseline.xml export-ignore /.php_cs.tests.php export-ignore
/psalm.xml export-ignore /psalm.xml export-ignore
/tests export-ignore /psalm-baseline.xml export-ignore
+1 -1
View File
@@ -9,7 +9,7 @@ on:
jobs: jobs:
normalize: normalize:
timeout-minutes: 15 timeout-minutes: 15
runs-on: ubuntu-22.04 runs-on: ubuntu-20.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-22.04 runs-on: ubuntu-20.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.3 php-version: 8.0
coverage: none coverage: none
- name: Install dependencies - name: Install dependencies
+7 -6
View File
@@ -12,19 +12,20 @@ on:
jobs: jobs:
php-laravel-integration-tests: php-laravel-integration-tests:
runs-on: ubuntu-22.04 runs-on: ubuntu-20.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] php: [8.3, 8.2, 8.1, 8.0]
laravel: [11.*, 10.*] laravel: [10.*, 9.*]
exclude: exclude:
- php: 8.1 - php: 8.0
laravel: 11.* laravel: 10.*
- php: 8.3
laravel: 9.*
name: P${{ matrix.php }} - Laravel${{ matrix.laravel }} name: P${{ matrix.php }} - Laravel${{ matrix.laravel }}
steps: steps:
- name: Checkout code - name: Checkout code
+3 -3
View File
@@ -9,15 +9,15 @@ on:
jobs: jobs:
build: build:
timeout-minutes: 15 timeout-minutes: 15
runs-on: ubuntu-22.04 runs-on: ubuntu-20.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: 8.3 php-version: 8.1
coverage: none coverage: none
extensions: pdo_sqlite extensions: pdo_sqlite
+7 -5
View File
@@ -20,13 +20,15 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-22.04, windows-2019] os: [ubuntu-20.04, windows-2019]
php: [8.3, 8.2, 8.1] php: [8.3, 8.2, 8.1, 8.0]
laravel: [10.*, 11.*] laravel: [9.*, 10.*]
stability: [prefer-lowest, prefer-stable] stability: [prefer-lowest, prefer-stable]
exclude: exclude:
- php: 8.1 - php: 8.0
laravel: 11.* laravel: 10.*
- php: 8.0
stability: 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' }}
+3 -56
View File
@@ -2,68 +2,15 @@
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/v3.0.0...master) [Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v2.14.0...master)
-------------- --------------
### Fixed
- Fix return value of query scopes from parent class [#1366 / sforward](https://github.com/barryvdh/laravel-ide-helper/pull/1366)
### Changed ### Changed
### Added
- Add type to pivot when using a custom pivot class [#1518 / d3v2a](https://github.com/barryvdh/laravel-ide-helper/pull/1518)
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) - 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
------------------ ------------------
@@ -73,12 +20,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 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
------------------ ------------------
+23 -7
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.
The 3.x branch supports Laravel 10 and 11. For older version, use the 2.x releases. It supports Laravel 9+ and PHP 8.0+
- [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)
@@ -113,10 +113,6 @@ The generator tries to identify the real class, but if it cannot be found, you c
Some classes need a working database connection. If you do not have a default working connection, some facades will not be included. Some classes need a working database connection. If you do not have a default working connection, some facades will not be included.
You can use an in-memory SQLite driver by adding the `-M` option. You can use an in-memory SQLite driver by adding the `-M` option.
If you use [real-time facades](https://laravel.com/docs/master/facades#real-time-facades) in your app, those will also be included in the generated file using a `@mixin` annotation and extending the original class underneath the facade.
**Note**: this feature uses the generated real-time facades files in the `storage/framework/cache` folder. Those files are generated on-demand as you use the real-time facade, so if the framework has not generated that first, it will not be included in the helper file. Run the route/command/code first and then regenerate the helper file and this time the real-time facade will be included in it.
You can choose to include helper files. This is not enabled by default, but you can override it with the `--helpers (-H)` option. You can choose to include helper files. This is not enabled by default, but you can override it with the `--helpers (-H)` option.
The `Illuminate/Support/helpers.php` is already set up, but you can add/remove your own files in the config file. The `Illuminate/Support/helpers.php` is already set up, but you can add/remove your own files in the config file.
@@ -151,7 +147,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. 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.
```bash ```bash
php artisan ide-helper:models "App\Models\Post" php artisan ide-helper:models "App\Models\Post"
@@ -271,6 +267,26 @@ 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 -12
View File
@@ -20,30 +20,31 @@
} }
], ],
"require": { "require": {
"php": "^8.1", "php": "^8.0",
"ext-json": "*", "ext-json": "*",
"barryvdh/reflection-docblock": "^2.1.1", "barryvdh/reflection-docblock": "^2.1.1",
"composer/class-map-generator": "^1.0", "composer/class-map-generator": "^1.0",
"illuminate/console": "^10 || ^11", "doctrine/dbal": "^3.1.4",
"illuminate/database": "^10.38 || ^11", "illuminate/console": "^9 || ^10",
"illuminate/filesystem": "^10 || ^11", "illuminate/filesystem": "^9 || ^10",
"illuminate/support": "^10 || ^11", "illuminate/support": "^9 || ^10",
"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 || ^11", "illuminate/config": "^9 || ^10",
"illuminate/view": "^9 || ^10 || ^11", "illuminate/view": "^9 || ^10",
"mockery/mockery": "^1.4", "mockery/mockery": "^1.4",
"orchestra/testbench": "^8 || ^9", "nesbot/carbon": "^2.62.1",
"phpunit/phpunit": "^10.5", "orchestra/testbench": "^7 || ^8",
"spatie/phpunit-snapshot-assertions": "^4 || ^5", "phpunit/phpunit": "^9",
"spatie/phpunit-snapshot-assertions": "^4",
"vimeo/psalm": "^5.4" "vimeo/psalm": "^5.4"
}, },
"suggest": { "suggest": {
"illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)." "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10)."
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
@@ -65,7 +66,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0-dev" "dev-master": "2.14-dev"
}, },
"laravel": { "laravel": {
"providers": [ "providers": [
+31 -2
View File
@@ -200,6 +200,36 @@ 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
@@ -292,8 +322,7 @@ 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 ('many' | method name. The value of the array is the return type of the relation.
| or 'morphTo').
| e.g. `'relationName' => 'many'`. | e.g. `'relationName' => 'many'`.
| |
*/ */
+14 -7
View File
@@ -1,17 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<phpunit <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" bootstrap="vendor/autoload.php"
cacheDirectory=".phpunit.result.cache" backupGlobals="false"
> 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>
<source> <coverage>
<include> <include>
<directory suffix=".php">src/</directory> <directory suffix=".php">src/</directory>
</include> </include>
</source> </coverage>
</phpunit> </phpunit>
-10
View File
@@ -69,16 +69,6 @@ namespace <?= $namespace == '__root' ? '' : trim($namespace, '\\') ?> {
<?php endforeach; ?> <?php endforeach; ?>
<?php foreach($real_time_facades as $name): ?>
<?php $nested = explode('\\', str_replace('\\' . class_basename($name), '', $name)); ?>
namespace <?php echo implode('\\', $nested); ?> {
/**
* @mixin <?= str_replace('Facades', '', $name) ?>
*/
class <?= class_basename($name) ?> extends <?= str_replace('Facades', '', $name) ?> {}
}
<?php endforeach; ?>
<?php if ($helpers) : ?> <?php if ($helpers) : ?>
namespace { namespace {
<?= $helpers ?> <?= $helpers ?>
+136 -122
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;
@@ -34,14 +34,10 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasOneThrough; use Illuminate\Database\Eloquent\Relations\HasOneThrough;
use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\MorphOne; use Illuminate\Database\Eloquent\Relations\MorphOne;
use Illuminate\Database\Eloquent\Relations\MorphPivot;
use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\Relations\MorphToMany;
use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Database\Schema\Builder;
use Illuminate\Filesystem\Filesystem; use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use phpDocumentor\Reflection\Types\ContextFactory; use phpDocumentor\Reflection\Types\ContextFactory;
@@ -107,6 +103,7 @@ 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;
/** /**
@@ -154,6 +151,9 @@ 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,7 +216,8 @@ 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, 'Refresh the properties/methods list, but keep the text'], ['reset', 'R', InputOption::VALUE_NONE, 'Remove the original phpdocs instead of appending'],
['smart-reset', 'r', InputOption::VALUE_NONE, 'Refresh the properties/methods list, but keep the text'],
['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',
@@ -240,6 +241,8 @@ 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 {
@@ -282,7 +285,9 @@ class ModelsCommand extends Command
$model = $this->laravel->make($name); $model = $this->laravel->make($name);
$this->getPropertiesFromTable($model); if ($hasDoctrine) {
$this->getPropertiesFromTable($model);
}
if (method_exists($model, 'getCasts')) { if (method_exists($model, 'getCasts')) {
$this->castPropertiesType($model); $this->castPropertiesType($model);
@@ -306,6 +311,13 @@ 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;
} }
@@ -375,7 +387,7 @@ class ModelsCommand extends Command
break; break;
case 'boolean': case 'boolean':
case 'bool': case 'bool':
$realType = 'bool'; $realType = 'boolean';
break; break;
case 'decimal': case 'decimal':
case 'string': case 'string':
@@ -391,7 +403,7 @@ class ModelsCommand extends Command
case 'int': case 'int':
case 'integer': case 'integer':
case 'timestamp': case 'timestamp':
$realType = 'int'; $realType = 'integer';
break; break;
case 'real': case 'real':
case 'double': case 'double':
@@ -406,13 +418,9 @@ 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 `:`
@@ -493,14 +501,31 @@ 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)
{ {
$table = $model->getTable(); $database = $model->getConnection()->getDatabaseName();
$schema = $model->getConnection()->getSchemaBuilder(); $table = $model->getConnection()->getTablePrefix() . $model->getTable();
$columns = $schema->getColumns($table); $schema = $model->getConnection()->getDoctrineSchemaManager();
$driverName = $model->getConnection()->getDriverName(); $databasePlatform = $schema->getDatabasePlatform();
$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;
@@ -508,28 +533,49 @@ class ModelsCommand extends Command
$this->setForeignKeys($schema, $table); $this->setForeignKeys($schema, $table);
foreach ($columns as $column) { foreach ($columns as $column) {
$name = $column['name']; $name = $column->getName();
if (in_array($name, $model->getDates())) { if (in_array($name, $model->getDates())) {
$type = $this->dateClass; $type = $this->dateClass;
} else { } else {
// Match types to php equivalent $type = $column->getType()->getName();
$type = match ($column['type_name']) { switch ($type) {
'tinyint', 'bit', case 'string':
'integer', 'int', 'int4', case 'text':
'smallint', 'int2', case 'date':
'mediumint', case 'time':
'bigint', 'int8' => 'int', case 'guid':
case 'datetimetz':
'boolean', 'bool' => 'bool', case 'datetime':
case 'decimal':
'float', 'real', 'float4', $type = 'string';
'double', 'float8' => 'float', break;
case 'integer':
default => 'string', case 'bigint':
}; case 'smallint':
$type = 'integer';
break;
case 'boolean':
switch ($platformName) {
case 'sqlite':
case 'mysql':
$type = 'integer';
break;
default:
$type = 'boolean';
break;
}
break;
case 'float':
$type = 'float';
break;
default:
$type = 'mixed';
break;
}
} }
if ($column['nullable']) { $comment = $column->getComment();
if (!$column->getNotnull()) {
$this->nullableColumns[$name] = true; $this->nullableColumns[$name] = true;
} }
$this->setProperty( $this->setProperty(
@@ -537,8 +583,8 @@ class ModelsCommand extends Command
$this->getTypeInModel($model, $type), $this->getTypeInModel($model, $type),
true, true,
true, true,
$column['comment'], $comment,
$column['nullable'] !$column->getNotnull()
); );
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
@@ -568,7 +614,10 @@ 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() && !(
$methodReflection->getDeclaringClass()->getName() === Model::class && ( in_array(
\Illuminate\Database\Eloquent\Concerns\HasAttributes::class,
$methodReflection->getDeclaringClass()->getTraitNames()
) && (
$methodReflection->getName() === 'setClassCastableAttribute' || $methodReflection->getName() === 'setClassCastableAttribute' ||
$methodReflection->getName() === 'setEnumCastableAttribute' $methodReflection->getName() === 'setEnumCastableAttribute'
) )
@@ -594,15 +643,18 @@ class ModelsCommand extends Command
$this->setProperty($name, $type, true, null, $comment); $this->setProperty($name, $type, true, null, $comment);
} }
} elseif ($isAttribute) { } elseif ($isAttribute) {
$types = $this->getAttributeTypes($model, $reflection); $name = Str::snake($method);
$type = $this->getTypeInModel($model, $types->get('get') ?: $types->get('set')) ?: null; $types = $this->getAttributeReturnType($model, $reflection);
$this->setProperty( $comment = $this->getCommentFromDocBlock($reflection);
Str::snake($method),
$type, if ($types->has('get')) {
$types->has('get'), $type = $this->getTypeInModel($model, $types['get']);
$types->has('set'), $this->setProperty($name, $type, true, null, $comment);
$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,
@@ -615,8 +667,8 @@ 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' && $method !== 'scope' && $method !== 'scopes') { } elseif (Str::startsWith($method, 'scope') && $method !== 'scopeQuery') {
//Magic scope<name>Attribute //Magic set<name>Attribute
$name = Str::camel(substr($method, 5)); $name = Str::camel(substr($method, 5));
if (!empty($name)) { if (!empty($name)) {
$comment = $this->getCommentFromDocBlock($reflection); $comment = $this->getCommentFromDocBlock($reflection);
@@ -628,8 +680,8 @@ class ModelsCommand extends Command
get_class($model->newModelQuery()) get_class($model->newModelQuery())
); );
$modelName = $this->getClassNameInDestinationFile( $modelName = $this->getClassNameInDestinationFile(
new ReflectionClass($model), $reflection->getDeclaringClass(),
get_class($model) $reflection->getDeclaringClass()->getName()
); );
$this->setMethod($name, $builder . '|' . $modelName, $args, $comment); $this->setMethod($name, $builder . '|' . $modelName, $args, $comment);
} }
@@ -701,26 +753,10 @@ class ModelsCommand extends Command
get_class($relationObj->getRelated()) get_class($relationObj->getRelated())
); );
$relationReturnType = $this->getRelationReturnTypes()[$relation] ?? false;
if ( if (
$relationReturnType === 'many' || strpos(get_class($relationObj), 'Many') !== false ||
( ($this->getRelationReturnTypes()[$relation] ?? '') === 'many'
!$relationReturnType &&
strpos(get_class($relationObj), 'Many') !== false
)
) { ) {
if ($relationObj instanceof BelongsToMany) {
$pivot = get_class($relationObj->newPivot());
if (!in_array($pivot, [Pivot::class, MorphPivot::class])) {
$this->setProperty(
$relationObj->getPivotAccessor(),
$this->getClassNameInDestinationFile($model, $pivot),
true,
false
);
}
}
//Collection or array of models (because Collection is Arrayable) //Collection or array of models (because Collection is Arrayable)
$relatedClass = '\\' . get_class($relationObj->getRelated()); $relatedClass = '\\' . get_class($relationObj->getRelated());
$collectionClass = $this->getCollectionClass($relatedClass); $collectionClass = $this->getCollectionClass($relatedClass);
@@ -746,11 +782,8 @@ class ModelsCommand extends Command
); );
} }
} elseif ( } elseif (
$relationReturnType === 'morphTo' || $relation === '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(
@@ -805,17 +838,12 @@ class ModelsCommand extends Command
$fkProp = $reflectionObj->getProperty('foreignKey'); $fkProp = $reflectionObj->getProperty('foreignKey');
$fkProp->setAccessible(true); $fkProp->setAccessible(true);
foreach (Arr::wrap($fkProp->getValue($relationObj)) as $foreignKey) { if ($relation === 'belongsTo') {
if (isset($this->nullableColumns[$foreignKey])) { return isset($this->nullableColumns[$fkProp->getValue($relationObj)]) ||
return true; !in_array($fkProp->getValue($relationObj), $this->foreignKeyConstraintsColumns, true);
}
if (!in_array($foreignKey, $this->foreignKeyConstraintsColumns, true)) {
return true;
}
} }
return false; return isset($this->nullableColumns[$fkProp->getValue($relationObj)]);
} }
/** /**
@@ -864,12 +892,7 @@ class ModelsCommand extends Command
public function unsetMethod($name) public function unsetMethod($name)
{ {
foreach ($this->methods as $k => $v) { unset($this->methods[strtolower($name)]);
if (strtolower($k) === strtolower($name)) {
unset($this->methods[$k]);
return;
}
}
} }
public function getMethodType(Model $model, string $classType) public function getMethodType(Model $model, string $classType)
@@ -897,13 +920,19 @@ class ModelsCommand extends Command
if ($this->reset) { if ($this->reset) {
$phpdoc = new DocBlock('', new Context($namespace)); $phpdoc = new DocBlock('', new Context($namespace));
$phpdoc->setText( if ($this->keep_text) {
(new DocBlock($reflection, new Context($namespace)))->getText() $phpdoc->setText(
); (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) {
@@ -1028,9 +1057,7 @@ 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 ";
@@ -1149,10 +1176,7 @@ 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);
@@ -1160,25 +1184,13 @@ class ModelsCommand extends Command
/** @var Attribute $attribute */ /** @var Attribute $attribute */
$attribute = $reflectionMethod->invoke($model); $attribute = $reflectionMethod->invoke($model);
$methods = new Collection(); return collect([
'get' => $attribute->get ? optional(new \ReflectionFunction($attribute->get))->getReturnType() : null,
if ($attribute->get) { 'set' => $attribute->set ? optional(new \ReflectionFunction($attribute->set))->getReturnType() : null,
$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 === null) { if ($type instanceof \ReflectionUnionType) {
$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) {
@@ -1189,7 +1201,7 @@ class ModelsCommand extends Command
$types = collect($this->extractReflectionTypes($type)); $types = collect($this->extractReflectionTypes($type));
} }
if ($type && $type->allowsNull()) { if ($type->allowsNull()) {
$types->push('null'); $types->push('null');
} }
@@ -1439,7 +1451,8 @@ 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;
@@ -1628,13 +1641,14 @@ class ModelsCommand extends Command
} }
/** /**
* @param Builder $schema * @param \Doctrine\DBAL\Schema\AbstractSchemaManager $schema
* @param string $table * @param string $table
* @throws DBALException
*/ */
protected function setForeignKeys($schema, $table) protected function setForeignKeys($schema, $table)
{ {
foreach ($schema->getForeignKeys($table) as $foreignKeyConstraint) { foreach ($schema->listTableForeignKeys($table) as $foreignKeyConstraint) {
foreach ($foreignKeyConstraint['columns'] as $columnName) { foreach ($foreignKeyConstraint->getLocalColumns() as $columnName) {
$this->foreignKeyConstraintsColumns[] = $columnName; $this->foreignKeyConstraintsColumns[] = $columnName;
} }
} }
-50
View File
@@ -16,10 +16,6 @@ use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Facade; use Illuminate\Support\Facades\Facade;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Support\Traits\Macroable; use Illuminate\Support\Traits\Macroable;
use PhpParser\Lexer\Emulative;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Parser\Php7;
use ReflectionClass; use ReflectionClass;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
@@ -80,7 +76,6 @@ class Generator
return $this->view->make('helper') return $this->view->make('helper')
->with('namespaces_by_extends_ns', $this->getAliasesByExtendsNamespace()) ->with('namespaces_by_extends_ns', $this->getAliasesByExtendsNamespace())
->with('namespaces_by_alias_ns', $this->getAliasesByAliasNamespace()) ->with('namespaces_by_alias_ns', $this->getAliasesByAliasNamespace())
->with('real_time_facades', $this->getRealTimeFacades())
->with('helpers', $this->helpers) ->with('helpers', $this->helpers)
->with('version', $app->version()) ->with('version', $app->version())
->with('include_fluent', $this->config->get('ide-helper.include_fluent', true)) ->with('include_fluent', $this->config->get('ide-helper.include_fluent', true))
@@ -179,51 +174,6 @@ class Generator
return $aliases; return $aliases;
} }
protected function getRealTimeFacades()
{
$facades = [];
$realTimeFacadeFiles = glob(storage_path('framework/cache/facade-*.php'));
foreach ($realTimeFacadeFiles as $file) {
try {
$name = $this->getFullyQualifiedClassNameInFile($file);
$facades[$name] = $name;
} catch (\Exception $e) {
continue;
}
}
return $facades;
}
protected function getFullyQualifiedClassNameInFile(string $path)
{
$contents = file_get_contents($path);
$parsers = new Php7(new Emulative());
$parsed = collect($parsers->parse($contents) ?: []);
$namespace = $parsed->first(function ($node) {
return $node instanceof Namespace_;
});
if ($namespace) {
$name = $namespace->name->toString();
$class = collect($namespace->stmts)->first(function ($node) {
return $node instanceof Class_;
});
if ($class) {
$name .= '\\' . $class->name->toString();
}
return $name;
}
}
/** /**
* Regroup aliases by namespace of extended classes * Regroup aliases by namespace of extended classes
* *
@@ -1,29 +0,0 @@
<?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,
];
}
@@ -1,24 +0,0 @@
<?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();
}
}
@@ -1,65 +0,0 @@
<?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 int $id * @property integer $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,34 +20,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -68,10 +70,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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
@@ -141,6 +143,8 @@ 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,7 +9,6 @@ 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(
@@ -17,84 +16,11 @@ class Simple extends Model
return $name; return $name;
}, },
function (?string $name): ?string { function (?string $name): ?string {
return $name; return $name === null ? null : ucfirst($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,18 +8,10 @@ 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 int $id * @property integer $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()
@@ -28,7 +20,6 @@ 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(
@@ -36,84 +27,11 @@ class Simple extends Model
return $name; return $name;
}, },
function (?string $name): ?string { function (?string $name): ?string {
return $name; return $name === null ? null : ucfirst($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 int $id * @property integer $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 int $id * @property integer $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
@@ -1,19 +0,0 @@
<?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
{
}
@@ -1,30 +0,0 @@
<?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();
}
}
@@ -1,24 +0,0 @@
<?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 int $id * @property integer $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,34 +26,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -74,10 +76,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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,6 +149,8 @@ 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,7 +1,5 @@
<?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
@@ -11,4 +9,4 @@ enum PostStatus
case Unpublished; case Unpublished;
case Archived; case Archived;
} }
@@ -11,6 +11,12 @@ 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 Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums\PostStatus;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Enums\PostStatus;
/** /**
* * Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpDocWithEnumDefaults\Models\Post
* *
* @property int $id * @property integer $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,34 +22,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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 +72,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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
@@ -144,6 +146,8 @@ use Illuminate\Database\Eloquent\Model;
* @method static Builder|Post whereTinyIntegerNullable($value) * @method static Builder|Post whereTinyIntegerNullable($value)
* @method static Builder|Post whereUnsignedBigIntegerNotNullable($value) * @method static Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static Builder|Post whereUnsignedBigIntegerNullable($value) * @method static Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static Builder|Post whereUnsignedDecimalNotNullable($value)
* @method static Builder|Post whereUnsignedDecimalNullable($value)
* @method static Builder|Post whereUnsignedIntegerNotNullable($value) * @method static Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static Builder|Post whereUnsignedIntegerNullable($value) * @method static Builder|Post whereUnsignedIntegerNullable($value)
* @method static Builder|Post whereUnsignedMediumIntegerNotNullable($value) * @method static Builder|Post whereUnsignedMediumIntegerNotNullable($value)
@@ -163,6 +167,6 @@ class Post extends Model
{ {
public function scopeHasStatus(Builder $query, ?PostStatus $status = PostStatus::Published) public function scopeHasStatus(Builder $query, ?PostStatus $status = PostStatus::Published)
{ {
// //
} }
} }
@@ -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 int $id * @property integer $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,34 +20,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -68,10 +70,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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
@@ -141,6 +143,8 @@ 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 int $id * @property integer $id
* @property string|null $charNullable * @property string|null $charNullable
* @property string $charNotNullable * @property string $charNotNullable
* @property string|null $stringNullable * @property string|null $stringNullable
@@ -20,34 +20,36 @@ 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 int|null $integerNullable * @property integer|null $integerNullable
* @property int $integerNotNullable * @property integer $integerNotNullable
* @property int|null $tinyIntegerNullable * @property integer|null $tinyIntegerNullable
* @property int $tinyIntegerNotNullable * @property integer $tinyIntegerNotNullable
* @property int|null $smallIntegerNullable * @property integer|null $smallIntegerNullable
* @property int $smallIntegerNotNullable * @property integer $smallIntegerNotNullable
* @property int|null $mediumIntegerNullable * @property integer|null $mediumIntegerNullable
* @property int $mediumIntegerNotNullable * @property integer $mediumIntegerNotNullable
* @property int|null $bigIntegerNullable * @property integer|null $bigIntegerNullable
* @property int $bigIntegerNotNullable * @property integer $bigIntegerNotNullable
* @property int|null $unsignedIntegerNullable * @property integer|null $unsignedIntegerNullable
* @property int $unsignedIntegerNotNullable * @property integer $unsignedIntegerNotNullable
* @property int|null $unsignedTinyIntegerNullable * @property integer|null $unsignedTinyIntegerNullable
* @property int $unsignedTinyIntegerNotNullable * @property integer $unsignedTinyIntegerNotNullable
* @property int|null $unsignedSmallIntegerNullable * @property integer|null $unsignedSmallIntegerNullable
* @property int $unsignedSmallIntegerNotNullable * @property integer $unsignedSmallIntegerNotNullable
* @property int|null $unsignedMediumIntegerNullable * @property integer|null $unsignedMediumIntegerNullable
* @property int $unsignedMediumIntegerNotNullable * @property integer $unsignedMediumIntegerNotNullable
* @property int|null $unsignedBigIntegerNullable * @property integer|null $unsignedBigIntegerNullable
* @property int $unsignedBigIntegerNotNullable * @property integer $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 int|null $booleanNullable * @property string|null $unsignedDecimalNullable
* @property int $booleanNotNullable * @property string $unsignedDecimalNotNullable
* @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
@@ -68,10 +70,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 int|null $yearNullable * @property integer|null $yearNullable
* @property int $yearNotNullable * @property integer $yearNotNullable
* @property string|null $binaryNullable * @property mixed|null $binaryNullable
* @property string $binaryNotNullable * @property mixed $binaryNotNullable
* @property string|null $uuidNullable * @property string|null $uuidNullable
* @property string $uuidNotNullable * @property string $uuidNotNullable
* @property string|null $ipaddressNullable * @property string|null $ipaddressNullable
@@ -141,6 +143,8 @@ 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 int $id * @property integer $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,34 +20,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -68,10 +70,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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
@@ -141,6 +143,8 @@ 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 int $id * @property integer $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,34 +26,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -74,10 +76,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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
@@ -150,6 +152,8 @@ 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 int $id * @property integer $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,34 +21,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -69,10 +71,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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,6 +147,8 @@ 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 int $id * @property integer $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,34 +22,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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 +72,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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,6 +149,8 @@ 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 int $id * @property integer $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,34 +28,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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 +78,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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
@@ -153,6 +155,8 @@ 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 int $id * @property integer $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,34 +26,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -74,10 +76,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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,6 +149,8 @@ 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)
@@ -1,16 +0,0 @@
<?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,22 +6,6 @@ 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)
@@ -45,26 +29,11 @@ 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)
* @method static \Illuminate\Database\Eloquent\Builder|FinalPost newModelQuery() * @property integer $id
* @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
@@ -75,34 +44,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -123,10 +94,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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
@@ -196,6 +167,8 @@ 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)
@@ -211,7 +184,6 @@ 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 int $id * @property integer $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 int $id * @property integer $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,11 +19,6 @@ 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 int $id * @property integer $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,34 +20,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -68,10 +70,10 @@ use Illuminate\Database\Eloquent\Model;
* @property string $timestamp_not_nullable * @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable * @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable * @property string $timestamptz_not_nullable
* @property int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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('newmodelquery'); $command->unsetMethod('query');
} }
} }
@@ -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 int $id * @property integer $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 int $id * @property integer $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()
@@ -1,18 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots\CustomPivot;
use Illuminate\Database\Eloquent\Model;
class ModelWithPivot extends Model
{
public function relationWithCustomPivot()
{
return $this->belongsToMany(ModelwithPivot::class)
->using(CustomPivot::class)
->as('customAccessor');
}
}
@@ -1,11 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots;
use Illuminate\Database\Eloquent\Relations\Pivot;
class CustomPivot extends Pivot
{
}
@@ -1,24 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
class Test extends AbstractModelsCommand
{
public function test(): void
{
$command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [
'--write' => true,
]);
$this->assertSame(0, $tester->getStatusCode());
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot();
}
}
@@ -1,48 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots\CustomPivot;
use Illuminate\Database\Eloquent\Model;
/**
*
*
* @property-read CustomPivot $customAccessor
* @property-read \Illuminate\Database\Eloquent\Collection<int, ModelWithPivot> $relationWithCustomPivot
* @property-read int|null $relation_with_custom_pivot_count
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ModelWithPivot query()
* @mixin \Eloquent
*/
class ModelWithPivot extends Model
{
public function relationWithCustomPivot()
{
return $this->belongsToMany(ModelwithPivot::class)
->using(CustomPivot::class)
->as('customAccessor');
}
}
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Pivot\Models\Pivots;
use Illuminate\Database\Eloquent\Relations\Pivot;
/**
*
*
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CustomPivot query()
* @mixin \Eloquent
*/
class CustomPivot extends Pivot
{
}
@@ -1,13 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
class Post extends PostParent
{
public function scopePublic($query)
{
return $query;
}
}
@@ -1,15 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
use Illuminate\Database\Eloquent\Model;
class PostParent extends Model
{
public function scopeActive($query)
{
return $query;
}
}
@@ -1,24 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
class Test extends AbstractModelsCommand
{
public function test(): void
{
$command = $this->app->make(ModelsCommand::class);
$tester = $this->runCommand($command, [
'--write' => true,
]);
$this->assertSame(0, $tester->getStatusCode());
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
$this->assertMatchesMockedSnapshot();
}
}
@@ -1,189 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
/**
*
*
* @property int $id
* @property string|null $char_nullable
* @property string $char_not_nullable
* @property string|null $string_nullable
* @property string $string_not_nullable
* @property string|null $text_nullable
* @property string $text_not_nullable
* @property string|null $medium_text_nullable
* @property string $medium_text_not_nullable
* @property string|null $long_text_nullable
* @property string $long_text_not_nullable
* @property int|null $integer_nullable
* @property int $integer_not_nullable
* @property int|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable
* @property int|null $small_integer_nullable
* @property int $small_integer_not_nullable
* @property int|null $medium_integer_nullable
* @property int $medium_integer_not_nullable
* @property int|null $big_integer_nullable
* @property int $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable
* @property float|null $float_nullable
* @property float $float_not_nullable
* @property float|null $double_nullable
* @property float $double_not_nullable
* @property string|null $decimal_nullable
* @property string $decimal_not_nullable
* @property int|null $boolean_nullable
* @property int $boolean_not_nullable
* @property string|null $enum_nullable
* @property string $enum_not_nullable
* @property string|null $json_nullable
* @property string $json_not_nullable
* @property string|null $jsonb_nullable
* @property string $jsonb_not_nullable
* @property string|null $date_nullable
* @property string $date_not_nullable
* @property string|null $datetime_nullable
* @property string $datetime_not_nullable
* @property string|null $datetimetz_nullable
* @property string $datetimetz_not_nullable
* @property string|null $time_nullable
* @property string $time_not_nullable
* @property string|null $timetz_nullable
* @property string $timetz_not_nullable
* @property string|null $timestamp_nullable
* @property string $timestamp_not_nullable
* @property string|null $timestamptz_nullable
* @property string $timestamptz_not_nullable
* @property int|null $year_nullable
* @property int $year_not_nullable
* @property string|null $binary_nullable
* @property string $binary_not_nullable
* @property string|null $uuid_nullable
* @property string $uuid_not_nullable
* @property string|null $ipaddress_nullable
* @property string $ipaddress_not_nullable
* @property string|null $macaddress_nullable
* @property string $macaddress_not_nullable
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @method static \Illuminate\Database\Eloquent\Builder|Post active()
* @method static \Illuminate\Database\Eloquent\Builder|Post newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Post newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Post public()
* @method static \Illuminate\Database\Eloquent\Builder|Post query()
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNotNullable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value)
* @mixin \Eloquent
*/
class Post extends PostParent
{
public function scopePublic($query)
{
return $query;
}
}
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\QueryScopes\Models;
use Illuminate\Database\Eloquent\Model;
/**
*
*
* @method static \Illuminate\Database\Eloquent\Builder|PostParent active()
* @method static \Illuminate\Database\Eloquent\Builder|PostParent newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PostParent newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PostParent query()
* @mixin \Eloquent
*/
class PostParent extends Model
{
public function scopeActive($query)
{
return $query;
}
}
@@ -8,9 +8,9 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
/** /**
* * Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\RelationCountProperties\Models\Post
* *
* @property int $id * @property integer $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,34 +21,36 @@ 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 int|null $integer_nullable * @property integer|null $integer_nullable
* @property int $integer_not_nullable * @property integer $integer_not_nullable
* @property int|null $tiny_integer_nullable * @property integer|null $tiny_integer_nullable
* @property int $tiny_integer_not_nullable * @property integer $tiny_integer_not_nullable
* @property int|null $small_integer_nullable * @property integer|null $small_integer_nullable
* @property int $small_integer_not_nullable * @property integer $small_integer_not_nullable
* @property int|null $medium_integer_nullable * @property integer|null $medium_integer_nullable
* @property int $medium_integer_not_nullable * @property integer $medium_integer_not_nullable
* @property int|null $big_integer_nullable * @property integer|null $big_integer_nullable
* @property int $big_integer_not_nullable * @property integer $big_integer_not_nullable
* @property int|null $unsigned_integer_nullable * @property integer|null $unsigned_integer_nullable
* @property int $unsigned_integer_not_nullable * @property integer $unsigned_integer_not_nullable
* @property int|null $unsigned_tiny_integer_nullable * @property integer|null $unsigned_tiny_integer_nullable
* @property int $unsigned_tiny_integer_not_nullable * @property integer $unsigned_tiny_integer_not_nullable
* @property int|null $unsigned_small_integer_nullable * @property integer|null $unsigned_small_integer_nullable
* @property int $unsigned_small_integer_not_nullable * @property integer $unsigned_small_integer_not_nullable
* @property int|null $unsigned_medium_integer_nullable * @property integer|null $unsigned_medium_integer_nullable
* @property int $unsigned_medium_integer_not_nullable * @property integer $unsigned_medium_integer_not_nullable
* @property int|null $unsigned_big_integer_nullable * @property integer|null $unsigned_big_integer_nullable
* @property int $unsigned_big_integer_not_nullable * @property integer $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 int|null $boolean_nullable * @property string|null $unsigned_decimal_nullable
* @property int $boolean_not_nullable * @property string $unsigned_decimal_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
@@ -69,10 +71,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 int|null $year_nullable * @property integer|null $year_nullable
* @property int $year_not_nullable * @property integer $year_not_nullable
* @property string|null $binary_nullable * @property mixed|null $binary_nullable
* @property string $binary_not_nullable * @property mixed $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,6 +145,8 @@ 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)
@@ -1,41 +0,0 @@
<?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,9 +107,4 @@ class Simple extends Model
{ {
return $this->testToAnyMorphedRelation(Simple::class); return $this->testToAnyMorphedRelation(Simple::class);
} }
public function relationSampleToBadlyNamedNotManyRelation()
{
return $this->testToBadlyNamedNotManyRelation(Simple::class);
}
} }
@@ -6,9 +6,7 @@ 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;
@@ -24,13 +22,11 @@ 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,7 +6,6 @@ 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;
@@ -35,10 +34,4 @@ 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);
}
} }
@@ -1,52 +0,0 @@
<?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 int $id * @property integer $id
* @property int $not_null_column_with_foreign_key_constraint * @property integer $not_null_column_with_foreign_key_constraint
* @property int $not_null_column_with_no_foreign_key_constraint * @property integer $not_null_column_with_no_foreign_key_constraint
* @property int|null $nullable_column_with_foreign_key_constraint * @property integer|null $nullable_column_with_foreign_key_constraint
* @property int|null $nullable_column_with_no_foreign_key_constraint * @property integer|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,68 +57,6 @@ 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;
@@ -132,9 +70,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 int $id * @property integer $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
@@ -159,7 +97,6 @@ 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()
@@ -258,9 +195,4 @@ class Simple extends Model
{ {
return $this->testToAnyMorphedRelation(Simple::class); return $this->testToAnyMorphedRelation(Simple::class);
} }
public function relationSampleToBadlyNamedNotManyRelation()
{
return $this->testToBadlyNamedNotManyRelation(Simple::class);
}
} }
@@ -35,4 +35,18 @@ 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 int $id * @property integer $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;
/** /**
* Text of existing phpdoc * Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple
* *
* @property int $id * @property integer $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 int $id * @property integer $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 int $cast_to_int * @property integer $cast_to_int
* @property int $cast_to_integer * @property integer $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 bool $cast_to_bool * @property boolean $cast_to_bool
* @property bool $cast_to_boolean * @property boolean $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 int $cast_to_timestamp * @property integer $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 int $id * @property integer $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 int $id * @property integer $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()
@@ -1,30 +0,0 @@
<?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,6 +67,9 @@ 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');
-90
View File
@@ -1,90 +0,0 @@
<?php
declare(strict_types=1);
namespace Barryvdh\LaravelIdeHelper\Tests;
use Barryvdh\LaravelIdeHelper\Generator;
use Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider;
use Illuminate\Foundation\AliasLoader;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\View;
use PhpParser\Lexer\Emulative;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Parser\Php7;
class RealTimeFacadesTest extends TestCase
{
public function testRealTimeFacades()
{
// Add the views path to the view finder so the generator actually generates the file
View::addLocation(__DIR__ . '/../resources/views');
// Clear cached real-time facades
$cachedFacades = glob(storage_path('framework/cache/facade-*.php'));
foreach ($cachedFacades as $cachedFacade) {
unlink($cachedFacade);
}
// Copy stubs to storage path as if the real-time facades were cached by the framework
copy(
__DIR__ . '/stubs/facade-0e0385307adf5db34c7986ecbd11646061356ec8.php',
storage_path('framework/cache/facade-0e0385307adf5db34c7986ecbd11646061356ec8.php')
);
copy(
__DIR__ . '/stubs/facade-9431b04ec1494fc71a1bc848f020044aba2af7b1.php',
storage_path('framework/cache/facade-9431b04ec1494fc71a1bc848f020044aba2af7b1.php')
);
// new instance of the generator which we test
$generator = new Generator($this->app['config'], $this->app['view'], null, false);
// Clear aliases and macros to have a small output file
AliasLoader::getInstance()->setAliases([]);
Request::flushMacros();
// Generate the helper file and return the content
$content = $generator->generate();
$this->assertStringContainsString('namespace Facades\Illuminate\Foundation\Exceptions {', $content, 'Could not find Facades\Illuminate\Foundation\Exceptions namespace in the generated helper file.');
$this->assertStringContainsString('namespace Facades\App\Exceptions {', $content, 'Could not find Facades\App\Exceptions namespace in the generated helper file.');
$parsed = collect((new Php7(new Emulative()))->parse($content) ?: []);
// test the Facades\Illuminate\Foundation\Exceptions namespace in the generated helper file
$frameworkExceptionsNamespace = $parsed->first(function ($stmt) {
return ($stmt instanceof Namespace_) && $stmt->name->toString() === 'Facades\Illuminate\Foundation\Exceptions';
});
$this->assertNotNull($frameworkExceptionsNamespace, 'Could not find Facades\Illuminate\Foundation\Exceptions namespace');
$this->assertSame('Facades\Illuminate\Foundation\Exceptions', $frameworkExceptionsNamespace->name->toString());
$this->verifyNamespace($frameworkExceptionsNamespace, 'Illuminate\Foundation\Exceptions\Handler');
// test the Facades\App\Exceptions namespace in the generated helper file
$appExceptionsNamespace = $parsed->first(function ($stmt) {
return ($stmt instanceof Namespace_) && $stmt->name->toString() === 'Facades\App\Exceptions';
});
$this->assertNotNull($appExceptionsNamespace, 'Could not find Facades\App\Exceptions namespace');
$this->assertSame('Facades\App\Exceptions', $appExceptionsNamespace->name->toString());
$this->verifyNamespace($appExceptionsNamespace, 'App\Exceptions\Handler');
}
private function verifyNamespace(Namespace_ $namespace, $target)
{
$stmts = collect($namespace->stmts);
$this->assertInstanceOf(Class_::class, $stmts[0], 'Expected instance of Class_');
$statement = $stmts[0];
$this->assertArrayHasKey('comments', $statement->getAttributes());
$this->assertStringContainsString('@mixin \\' . $target, $statement->getAttributes()['comments'][0]->getText(), 'Mixin comment not found');
$this->assertSame(class_basename($target), $statement->name->toString(), 'Class name not found');
$this->assertSame($target, $statement->extends->toString(), 'Class extends not found');
}
protected function getPackageProviders($app)
{
return [IdeHelperServiceProvider::class];
}
}
@@ -1,21 +0,0 @@
<?php
declare(strict_types=1);
namespace Facades\Illuminate\Foundation\Exceptions;
use Illuminate\Support\Facades\Facade;
/**
* @see \Illuminate\Foundation\Exceptions\Handler
*/
class Handler extends Facade
{
/**
* Get the registered name of the component.
*/
protected static function getFacadeAccessor(): string
{
return 'Illuminate\Foundation\Exceptions\Handler';
}
}
@@ -1,21 +0,0 @@
<?php
declare(strict_types=1);
namespace Facades\App\Exceptions;
use Illuminate\Support\Facades\Facade;
/**
* @see \App\Exceptions\Handler
*/
class Handler extends Facade
{
/**
* Get the registered name of the component.
*/
protected static function getFacadeAccessor(): string
{
return 'App\Exceptions\Handler';
}
}