Skip to content

Commit

Permalink
use soft delete and fix some errors for model
Browse files Browse the repository at this point in the history
  • Loading branch information
Dilee committed May 14, 2023
1 parent 3567d76 commit 6366526
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ return new class extends Migration
$table->string('name', 50)->index();

$table->timestamps();
$table->softDeletes();
});

Schema::create(config('vietnamese-administrative-units.district.table', 'districts'), function (Blueprint $table) {
Expand All @@ -26,6 +27,7 @@ return new class extends Migration
$table->string('name', 50)->index();

$table->timestamps();
$table->softDeletes();
});

Schema::create(config('vietnamese-administrative-units.ward.table', 'wards'), function (Blueprint $table) {
Expand All @@ -37,6 +39,7 @@ return new class extends Migration
$table->string('name', 50)->index();

$table->timestamps();
$table->softDeletes();
});
}
};
5 changes: 4 additions & 1 deletion src/Models/District.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
* @property int $id
Expand All @@ -15,10 +16,12 @@
class District extends Model
{
use HasFactory;
use SoftDeletes;

protected $fillable = [
'code',
'name',
'province_id',
];

public function getTable()
Expand All @@ -28,7 +31,7 @@ public function getTable()

public function province()
{
return $this->belongsTo(config('vietnamese-administrative-units.province.model', Province::class));
return $this->belongsTo(config('vietnamese-administrative-units.province.model', Province::class))->withTrashed();

Check failure on line 34 in src/Models/District.php

View workflow job for this annotation

GitHub Actions / phpstan

Call to an undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::withTrashed().
}

public function wards()
Expand Down
2 changes: 2 additions & 0 deletions src/Models/Province.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
* @property int $id
Expand All @@ -14,6 +15,7 @@
class Province extends Model
{
use HasFactory;
use SoftDeletes;

protected $fillable = [
'code',
Expand Down
8 changes: 5 additions & 3 deletions src/Models/Ward.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,23 @@

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
* @property int $id
* @property string $code
* @property string $name
* @property Province $province
* @property Ward[]|\Illuminate\Database\Eloquent\Collection $wards
* @property District $district
*/
class Ward extends Model
{
use HasFactory;
use SoftDeletes;

protected $fillable = [
'code',
'name',
'district_id',
];

public function getTable()
Expand All @@ -28,6 +30,6 @@ public function getTable()

public function district()
{
return $this->belongsTo(config('vietnamese-administrative-units.district.model', District::class));
return $this->belongsTo(config('vietnamese-administrative-units.district.model', District::class))->withTrashed();

Check failure on line 33 in src/Models/Ward.php

View workflow job for this annotation

GitHub Actions / phpstan

Call to an undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::withTrashed().
}
}
21 changes: 21 additions & 0 deletions tests/ModelTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
use Dilee\VietnameseAdministrativeUnits\Models\District;
use Dilee\VietnameseAdministrativeUnits\Models\Province;
use Dilee\VietnameseAdministrativeUnits\Models\Ward;
use function Pest\Laravel\assertDatabaseCount;

it('relationships are working', function () {
Ward::factory()->count(10)->create();
Expand All @@ -13,3 +14,23 @@
expect($ward->district->province)->toBeInstanceOf(Province::class);
expect($ward->district->province->districts)->toHaveCount(1);
});

it('bypass soft delete', function () {
/** @var Ward */
$ward = Ward::factory()->create();

$district = $ward->district;
$province = $district->province;

$district->delete();
$province->delete();

assertDatabaseCount('provinces', 1);
assertDatabaseCount('districts', 1);
assertDatabaseCount('wards', 1);

$ward = Ward::first();

expect($ward->district)->toBeInstanceOf(District::class);
expect($ward->district->province)->toBeInstanceOf(Province::class);
});

0 comments on commit 6366526

Please sign in to comment.