Skip to content

Commit da32e0a

Browse files
authored
chore: remove user relation for person model (#21)
* removed user relationship from Person * fix * fix * wip * removed user from PersonImporter.php * cleanup * wip
1 parent 329c976 commit da32e0a

File tree

10 files changed

+4
-62
lines changed

10 files changed

+4
-62
lines changed

app/Filament/Concerns/IncomeExpenseResourceTrait.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ public static function form(Form $form): Form
4242
Select::make('person_id')
4343
->relationship(
4444
'person',
45-
'name',
46-
fn (Builder $query): Builder => $query->where('user_id', auth()->id())
45+
'name'
4746
)
4847
->nullable(),
4948

app/Filament/Imports/PersonImporter.php

-4
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ class PersonImporter extends Importer
1414
public static function getColumns(): array
1515
{
1616
return [
17-
ImportColumn::make('user')
18-
->requiredMapping()
19-
->relationship(resolveUsing: 'name')
20-
->rules(['required']),
2117
ImportColumn::make('name')
2218
->requiredMapping()
2319
->rules(['required', 'max:255']),

app/Filament/Resources/PersonResource.php

+1-19
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
use Filament\Tables\Actions\EditAction;
1515
use Filament\Tables\Columns\TextColumn;
1616
use Filament\Tables\Table;
17-
use Illuminate\Database\Eloquent\Builder;
18-
use Illuminate\Database\Eloquent\Model;
1917

2018
class PersonResource extends Resource
2119
{
@@ -70,24 +68,8 @@ public static function getPages(): array
7068
];
7169
}
7270

73-
public static function getGlobalSearchEloquentQuery(): Builder
74-
{
75-
return parent::getGlobalSearchEloquentQuery()->with(['user']);
76-
}
77-
7871
public static function getGloballySearchableAttributes(): array
7972
{
80-
return ['name', 'user.name'];
81-
}
82-
83-
public static function getGlobalSearchResultDetails(Model $record): array
84-
{
85-
$details = [];
86-
87-
if ($record->user) {
88-
$details['User'] = $record->user->name;
89-
}
90-
91-
return $details;
73+
return ['name'];
9274
}
9375
}

app/Models/Person.php

-7
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,17 @@
44

55
use Illuminate\Database\Eloquent\Factories\HasFactory;
66
use Illuminate\Database\Eloquent\Model;
7-
use Illuminate\Database\Eloquent\Relations\BelongsTo;
87
use Illuminate\Database\Eloquent\Relations\HasMany;
98

109
class Person extends Model
1110
{
1211
use HasFactory;
1312

1413
protected $fillable = [
15-
'user_id',
1614
'name',
1715
'nick_name',
1816
];
1917

20-
public function user(): BelongsTo
21-
{
22-
return $this->belongsTo(User::class);
23-
}
24-
2518
public function expenses(): HasMany
2619
{
2720
return $this->hasMany(Expense::class, 'person_id');

app/Models/User.php

-5
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,6 @@ public function accounts(): HasMany
5353
return $this->hasMany(Account::class, 'user_id');
5454
}
5555

56-
public function people(): HasMany
57-
{
58-
return $this->hasMany(Person::class, 'user_id');
59-
}
60-
6156
public function expenses(): HasMany
6257
{
6358
return $this->hasMany(Expense::class, 'user_id');

database/factories/PersonFactory.php

-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace Database\Factories;
44

55
use App\Models\Person;
6-
use App\Models\User;
76
use Illuminate\Database\Eloquent\Factories\Factory;
87
use Illuminate\Support\Carbon;
98

@@ -17,8 +16,6 @@ public function definition(): array
1716
'created_at' => Carbon::now(),
1817
'updated_at' => Carbon::now(),
1918
'name' => fake()->name(),
20-
21-
'user_id' => User::factory(),
2219
];
2320
}
2421
}

database/migrations/2024_04_28_132717_create_people_table.php

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?php
22

3-
use App\Models\User;
43
use Illuminate\Database\Migrations\Migration;
54
use Illuminate\Database\Schema\Blueprint;
65
use Illuminate\Support\Facades\Schema;
@@ -11,8 +10,7 @@ public function up(): void
1110
{
1211
Schema::create('people', function (Blueprint $table) {
1312
$table->id();
14-
$table->foreignIdFor(User::class);
15-
$table->string('name');
13+
$table->string('name')->unique();
1614
$table->string('nick_name')->nullable();
1715
$table->timestamps();
1816
});

tests/Feature/Models/PersonTest.php

-7
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,10 @@
33
use App\Models\Expense;
44
use App\Models\Income;
55
use App\Models\Person;
6-
use App\Models\User;
76
use Illuminate\Foundation\Testing\RefreshDatabase;
87

98
uses(RefreshDatabase::class);
109

11-
it('belongs to a user', function () {
12-
$person = Person::factory()->has(User::factory())->create();
13-
14-
expect($person->user)->toBeInstanceOf(User::class);
15-
});
16-
1710
it('has incomes', function () {
1811
$person = Person::factory()
1912
->has(Income::factory()->count(2))

tests/Feature/Models/UserTest.php

-11
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
use App\Models\Account;
44
use App\Models\Expense;
55
use App\Models\Income;
6-
use App\Models\Person;
76
use App\Models\Transfer;
87
use App\Models\User;
98
use Illuminate\Foundation\Testing\RefreshDatabase;
@@ -20,16 +19,6 @@
2019
->each->toBeInstanceOf(Account::class);
2120
});
2221

23-
it('has people', function () {
24-
$user = User::factory()
25-
->has(Person::factory()->count(2))
26-
->create();
27-
28-
expect($user->people)
29-
->toHaveCount(2)
30-
->each->toBeInstanceOf(Person::class);
31-
});
32-
3322
it('has incomes', function () {
3423
$user = User::factory()
3524
->has(Income::factory()->count(2))

tests/Feature/Person/PersonCRUDTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171

7272
it('can delete person', function () {
7373

74-
$person = Person::factory()->for($this->user)->create();
74+
$person = Person::factory()->create();
7575

7676
livewire(PersonResource\Pages\EditPerson::class, [
7777
'record' => $person->getRouteKey(),

0 commit comments

Comments
 (0)