首先,如果有比使用多态关系更好的方法,请告诉我。我有一个约会表,可以有联系人ID或关系ID,具体取决于用户在创建新约会时选择的内容。为此,我使用的是多态关系,而不是使用两个单独的contact_id
和relation_id
列。
此外,如果有更好的方法来执行以下操作(我目前在我的商店和更新方法中都这样做),那么请详细说明。
if ($request->has('contact_id'))
{
Contact::find($request['contact_id'])->appointments()->save($appointment);
}
if ($request->has('relation_id'))
{
Relation::find($request['relation_id'])->appointments()->save($appointment);
}
以上基本上检查是否从其中一个下拉列表中选择了联系人或关系,如果是,则应该将该多态关系添加到新插入的约会中。
但在检查是否指定了contact_id或relation_id之前,我在更新方法中所做的是以下内容:
Appointment::where('id', $appointment->id)->update(['relationship_id' => '0', 'relationship_type' => '']);
因此,我首先清空多态关系,然后检查更新,因为联系人或关系是可选的。因此,当有人更新他/她的约会,并删除第一个指定的联系人或关系时,应该从数据库中清除它。必须有一个更好的方法来解决这个问题,而且我知道我所做的不是要走的路。但我不熟悉多态关系,只是想了解更多关于它们的信息。任何信息将不胜感激:)