【问题标题】:How to delete the "event" data with "eventable" polymorphic relation如何删除具有“事件”多态关系的“事件”数据
【发布时间】:2020-06-29 10:06:25
【问题描述】:

我有表格“events”、“eventables”和“items”。

我创建了一个多态关系,以便能够将事件添加到我的所有模型中。它工作正常。但是我有删除的问题。

当我在“item”中创建一个元素时,我也创建了一个“Event”。

 $item = new Item();
 $item->name = $request->name();
 $item->save();

 $event = Event::create(['name' => $request->name]);

 $item->attachEvents($event);

我希望我可以从我的销毁方法中删除这个“事件”。我能做的就是分离关系。

public function destroy($id) {
  $item = HealthItem::findOrFail($id);
  $item->detachEvents(); // Function from custom trait, simply $this->events()->detach($events)
  $item->delete();
}

我想删除链接的“事件”。我该怎么办?

【问题讨论】:

  • 这里存在设计问题,如果请求中没有该信息,如何知道要删除哪个事件?
  • 通过多态关系,我有一个带有event_ideventable_typeeventable_id 的表“事件表”。这些是 Laravel 的多态关系。
  • 是的,我知道什么是多态关系,但是对于我在你的问题中看到的,你想删除一个事件吗?
  • 是的,当我删除一个项目时
  • 那我该怎么做呢?我将看到几个将连接到事件的模型

标签: php laravel eloquent polymorphic-associations


【解决方案1】:

我认为你的问题可能出在这行代码上

$item->detachEvents();

最好看看那部分代码。

无论如何:

  1. 当您调用 detachEvents() 时,您将其作为对象方法调用,如果模型使用该特征就可以了

  2. 您正在对 Item 类型的对象调用 detachEvents,希望在您的 trait 上您引用从该项目创建的事件,例如,而不是

$this->events()->分离($events)

变量 $events 应该是 event 类型而不是 Item。

【讨论】:

    猜你喜欢
    • 2021-06-09
    • 2017-06-12
    • 2014-09-23
    • 1970-01-01
    • 2019-07-22
    • 2016-05-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多