AssetObserver.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Observers;
  3. use App\Models\Asset;
  4. class AssetObserver
  5. {
  6. /**
  7. * Handle the Asset "created" event.
  8. */
  9. public function created(Asset $asset): void
  10. {
  11. //
  12. }
  13. /**
  14. * Handle the Asset "updated" event.
  15. */
  16. public function updated(Asset $asset): void
  17. {
  18. //
  19. }
  20. /**
  21. * Handle the Asset "deleted" event.
  22. */
  23. public function deleted(Asset $asset): void
  24. {
  25. }
  26. public function deleting(Asset $asset): void
  27. {
  28. // 解除 asset 与 requirementGroups 的关联,但不删除 requirementGroups
  29. $asset->requirementGroups()->update(['asset_id' => null]);
  30. // 遍历 requirements,解除每个 $requirement 与 projects 的关联
  31. foreach ($asset->requirements as $requirement) {
  32. $requirement->projects()->detach();
  33. }
  34. // 类似地,解除 asset 与 requirements 的关联
  35. $asset->requirements()->update(['asset_id' => null]);
  36. // 遍历 plans,解除每个 plan 与 projects 的关联
  37. foreach ($asset->plans as $plan) {
  38. $plan->projects()->detach();
  39. }
  40. $asset->plans()->delete();
  41. }
  42. /**
  43. * Handle the Asset "restored" event.
  44. */
  45. public function restored(Asset $asset): void
  46. {
  47. //
  48. }
  49. /**
  50. * Handle the Asset "force deleted" event.
  51. */
  52. public function forceDeleted(Asset $asset): void
  53. {
  54. //
  55. }
  56. }