Класс модели опроса
Код: Выделить всё
static::forceDeleted(
function ($survey) {
// Force delete the surveyable item.
$surveyable = $survey->surveyable;
if ($surveyable) {
$surveyable->forceDelete();
}
}
);
Класс модели GasPipe
Код: Выделить всё
static::forceDeleting(
function ($gasPipe) {
// Check if any surveys reference this gas pipe
if ($gasPipe->surveys()->count() > 0) {
return false;
}
}
);
Код: Выделить всё
public function it_deletes_surveyable_when_no_other_surveys_reference_it()
{
require_once base_path('tests/TestHelpers.php');
$pipeAttrs = gasPipeAttributesFromTopojson(base_path('tests/Fixtures/topojson-pipe-1.json'));
$pipe = GasPipe::factory()->create($pipeAttrs);
$survey = Survey::factory()->create([
'surveyable_type' => GasPipe::class,
'surveyable_id' => $pipe->id,
'assigned_to_id' => $this->user->id,
]);
$survey->forceDelete();
// Survey should be permanently deleted
$this->assertDatabaseMissing('surveys', ['id' => $survey->id]);
// Surveyable should be permanently deleted (no other surveys reference it)
$this->assertDatabaseMissing('gas_pipes', ['id' => $pipe->id]);
}
Если я вручную удалю GasPipe с помощью чего-то вроде
Код: Выделить всё
$gasPipe->forceDelete();Код действительно работает, если я прохожу и тестирую его вручную в пользовательском интерфейсе, но я стараюсь постоянно избегать ручного тестирования, так как его установка требует много времени данные обновляются по мере необходимости каждый раз.
Подробнее здесь: https://stackoverflow.com/questions/797 ... laravel-11
Мобильная версия