AssetObserver.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. foreach ($asset->library as $library){
  42. $library->container()->delete();
  43. }
  44. $asset->library()->delete();
  45. }
  46. /**
  47. * Handle the Asset "restored" event.
  48. */
  49. public function restored(Asset $asset): void
  50. {
  51. //
  52. }
  53. /**
  54. * Handle the Asset "force deleted" event.
  55. */
  56. public function forceDeleted(Asset $asset): void
  57. {
  58. //
  59. }
  60. }