Skip to content

Commit e63d191

Browse files
committed
Ignore column properties via config and unset properties in hooks
1 parent 999167d commit e63d191

File tree

21 files changed

+109
-1
lines changed

21 files changed

+109
-1
lines changed

README.md

+11
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,16 @@ Or can be ignored by setting the `ignored_models` config
212212
],
213213
```
214214

215+
#### Ignore Models Properties
216+
217+
Models properties can be ignored by setting the `ignored_models_properties` config
218+
219+
```php
220+
'ignored_models_properties' => [
221+
App\Post::class => [ 'hash' ],
222+
],
223+
```
224+
215225
#### Magic `where*` methods
216226

217227
Eloquent allows calling `where<Attribute>` on your models, e.g. `Post::whereTitle(…)` and automatically translates this to e.g. `Post::where('title', '=', '…')`.
@@ -301,6 +311,7 @@ class MyCustomHook implements ModelHookInterface
301311
return;
302312
}
303313

314+
$command->unsetProperty('hash');
304315
$command->setProperty('custom', 'string', true, false, 'My custom property');
305316
$command->unsetMethod('method');
306317
$command->setMethod('method', $command->getMethodType($model, '\Some\Class'), ['$param']);

config/ide-helper.php

+15
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,21 @@
155155

156156
],
157157

158+
/*
159+
|--------------------------------------------------------------------------
160+
| Models properties to ignore
161+
|--------------------------------------------------------------------------
162+
|
163+
| Define which properties should be ignored per model. The key of the array
164+
| is the canonical class name of the model and the values the properties
165+
| name, e.g. `Model::class => [ 'ignored_column' ]`
166+
|
167+
*/
168+
169+
'ignored_models_properties' => [
170+
171+
],
172+
158173
/*
159174
|--------------------------------------------------------------------------
160175
| Models hooks

src/Console/ModelsCommand.php

+13-1
Original file line numberDiff line numberDiff line change
@@ -489,9 +489,14 @@ public function getPropertiesFromTable($model)
489489
return;
490490
}
491491

492+
$ignoredProperties = array_values($this->laravel['config']->get('ide-helper.ignored_models_properties.' . get_class($model), []));
493+
492494
$this->setForeignKeys($schema, $table);
493495
foreach ($columns as $column) {
494496
$name = $column->getName();
497+
if (in_array($name, $ignoredProperties)) {
498+
continue;
499+
}
495500
if (in_array($name, $model->getDates())) {
496501
$type = $this->dateClass;
497502
} else {
@@ -816,6 +821,13 @@ public function setProperty($name, $type = null, $read = null, $write = null, $c
816821
}
817822
}
818823

824+
public function unsetProperty($name)
825+
{
826+
unset($this->properties[$name]);
827+
828+
$this->unsetMethod(Str::camel('where_' . $name));
829+
}
830+
819831
public function setMethod($name, $type = '', $arguments = [], $comment = '')
820832
{
821833
$methods = array_change_key_case($this->methods, CASE_LOWER);
@@ -830,7 +842,7 @@ public function setMethod($name, $type = '', $arguments = [], $comment = '')
830842

831843
public function unsetMethod($name)
832844
{
833-
unset($this->methods[strtolower($name)]);
845+
unset($this->methods[$name]);
834846
}
835847

836848
public function getMethodType(Model $model, string $classType)

tests/Console/ModelsCommand/Attributes/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Attributes\Models\Simple
1212
*
1313
* @property integer $id
14+
* @property string $unset
1415
* @property string|null $name
1516
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
1617
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
1718
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
1819
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
20+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
1921
* @mixin \Eloquent
2022
*/
2123
class Simple extends Model

tests/Console/ModelsCommand/Comment/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Comment\Models\Simple
1414
*
1515
* @property integer $id
16+
* @property string $unset
1617
* @property string $both_same_name I'm a getter
1718
* @property string $both_without_getter_comment
1819
* @property-read string $faker_comment
@@ -31,6 +32,7 @@
3132
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
3233
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
3334
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
35+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
3436
* @mixin \Eloquent
3537
*/
3638
class Simple extends Model

tests/Console/ModelsCommand/CustomCollection/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomCollection\Models\Simple
1313
*
1414
* @property integer $id
15+
* @property string $unset
1516
* @property-read SimpleCollection|Simple[] $relationHasMany
1617
* @property-read int|null $relation_has_many_count
1718
* @method static SimpleCollection|static[] all($columns = ['*'])
@@ -20,6 +21,7 @@
2021
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
2122
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
2223
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
24+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
2325
* @mixin \Eloquent
2426
*/
2527
class Simple extends Model

tests/Console/ModelsCommand/Getter/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models\Simple
1212
*
1313
* @property integer $id
14+
* @property string $unset
1415
* @property-read int|null $attribute_return_type_int_or_null
1516
* @property-read array $attribute_returns_array
1617
* @property-read bool $attribute_returns_bool
@@ -35,6 +36,7 @@
3536
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
3637
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
3738
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
39+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
3840
* @mixin \Eloquent
3941
*/
4042
class Simple extends Model

tests/Console/ModelsCommand/Ignored/Test.php

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
88
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
99
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\Ignored;
10+
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\NotIgnored;
1011

1112
class Test extends AbstractModelsCommand
1213
{
@@ -17,8 +18,13 @@ protected function getEnvironmentSetUp($app)
1718
$app['config']->set('ide-helper.ignored_models', [
1819
Ignored::class,
1920
]);
21+
22+
$app['config']->set('ide-helper.ignored_models_properties', [
23+
NotIgnored::class => ['ignored'],
24+
]);
2025
}
2126

27+
2228
public function test(): void
2329
{
2430
$command = $this->app->make(ModelsCommand::class);

tests/Console/ModelsCommand/Ignored/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
/**
1010
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\NotIgnored
1111
*
12+
* @property integer $id
1213
* @method static \Illuminate\Database\Eloquent\Builder|NotIgnored newModelQuery()
1314
* @method static \Illuminate\Database\Eloquent\Builder|NotIgnored newQuery()
1415
* @method static \Illuminate\Database\Eloquent\Builder|NotIgnored query()
16+
* @method static \Illuminate\Database\Eloquent\Builder|NotIgnored whereId($value)
1517
* @mixin \Eloquent
1618
*/
1719
class NotIgnored extends Model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks;
6+
7+
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
8+
use Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface;
9+
use Illuminate\Database\Eloquent\Model;
10+
11+
class UnsetProperty implements ModelHookInterface
12+
{
13+
public function run(ModelsCommand $command, Model $model): void
14+
{
15+
$command->unsetProperty('unset');
16+
}
17+
}

tests/Console/ModelsCommand/ModelHooks/Test.php

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\CustomMethod;
1010
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\CustomProperty;
1111
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\UnsetMethod;
12+
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\UnsetProperty;
1213
use Illuminate\Filesystem\Filesystem;
1314
use Mockery;
1415

@@ -28,6 +29,7 @@ protected function getEnvironmentSetUp($app)
2829
CustomProperty::class,
2930
CustomMethod::class,
3031
UnsetMethod::class,
32+
UnsetProperty::class,
3133
],
3234
]);
3335
}

tests/Console/ModelsCommand/PHPStormNoInspection/__snapshots__/Test__testNoinspectionNotPresent__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\PHPStormNoInspection\Models\Simple
1111
*
1212
* @property integer $id
13+
* @property string $unset
1314
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
1415
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
1516
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
1617
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
18+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
1719
* @mixin \Eloquent
1820
*/
1921
class Simple extends Model

tests/Console/ModelsCommand/PHPStormNoInspection/__snapshots__/Test__testNoinspectionPresent__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\PHPStormNoInspection\Models\Simple
1111
*
1212
* @property integer $id
13+
* @property string $unset
1314
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
1415
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
1516
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
1617
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
18+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
1719
* @mixin \Eloquent
1820
* @noinspection PhpFullyQualifiedNameUsageInspection
1921
* @noinspection PhpUnnecessaryFullyQualifiedNameInspection

tests/Console/ModelsCommand/Relations/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public function nullableColumnWithNoForeignKeyConstraint(): BelongsTo
7373
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple
7474
*
7575
* @property integer $id
76+
* @property string $unset
7677
* @property-read Simple|null $relationBelongsTo
7778
* @property-read AnotherModel|null $relationBelongsToInAnotherNamespace
7879
* @property-read \Illuminate\Database\Eloquent\Collection|Simple[] $relationBelongsToMany
@@ -99,6 +100,7 @@ public function nullableColumnWithNoForeignKeyConstraint(): BelongsTo
99100
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
100101
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
101102
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
103+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
102104
* @mixin \Eloquent
103105
*/
104106
class Simple extends Model

tests/Console/ModelsCommand/ResetAndSmartReset/__snapshots__/Test__testNoReset__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
*
1212
* @property string $foo
1313
* @property integer $id
14+
* @property string $unset
1415
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
1516
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
1617
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
1718
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
19+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
1820
* @mixin \Eloquent
1921
*/
2022
class Simple extends Model

tests/Console/ModelsCommand/ResetAndSmartReset/__snapshots__/Test__testReset__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple
1111
*
1212
* @property integer $id
13+
* @property string $unset
1314
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
1415
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
1516
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
1617
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
18+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
1719
* @mixin \Eloquent
1820
*/
1921
class Simple extends Model

tests/Console/ModelsCommand/ResetAndSmartReset/__snapshots__/Test__testSmartReset__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
* Text of existing phpdoc
1111
*
1212
* @property integer $id
13+
* @property string $unset
1314
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
1415
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
1516
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
1617
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
18+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
1719
* @mixin \Eloquent
1820
*/
1921
class Simple extends Model

tests/Console/ModelsCommand/SoftDeletes/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple
1212
*
1313
* @property integer $id
14+
* @property string $unset
1415
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
1516
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
1617
* @method static \Illuminate\Database\Query\Builder|Simple onlyTrashed()
1718
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
1819
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
20+
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereUnset($value)
1921
* @method static \Illuminate\Database\Query\Builder|Simple withTrashed()
2022
* @method static \Illuminate\Database\Query\Builder|Simple withoutTrashed()
2123
* @mixin \Eloquent

tests/Console/ModelsCommand/Variadic/__snapshots__/Test__test__1.php

+2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Variadic\Models\Simple
1212
*
1313
* @property integer $id
14+
* @property string $unset
1415
* @method static Builder|Simple newModelQuery()
1516
* @method static Builder|Simple newQuery()
1617
* @method static Builder|Simple query()
1718
* @method static Builder|Simple whereId($value)
1819
* @method static Builder|Simple whereTypedVariadic(int ...$values)
20+
* @method static Builder|Simple whereUnset($value)
1921
* @method static Builder|Simple whereVariadic(...$values)
2022
* @mixin \Eloquent
2123
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Illuminate\Database\Migrations\Migration;
6+
use Illuminate\Database\Schema\Blueprint;
7+
use Illuminate\Support\Facades\Schema;
8+
9+
class NotIgnored extends Migration
10+
{
11+
public function up(): void
12+
{
13+
Schema::create('not_ignoreds', function (Blueprint $table) {
14+
$table->bigIncrements('id');
15+
$table->string('ignored');
16+
});
17+
}
18+
}

tests/Console/ModelsCommand/migrations/____simple_table.php

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public function up(): void
1212
{
1313
Schema::create('simples', function (Blueprint $table) {
1414
$table->bigIncrements('id');
15+
$table->string('unset');
1516
});
1617
}
1718
}

0 commit comments

Comments
 (0)