多模型的多态关系和模型保持的检索类型

时间:2016-10-06 07:26:34

标签: php laravel eloquent

这些是模型:

使用数据字段检查

id, 'inspector_id', 'room_id', 'housekeeper_id', 'comments', 'signature'

带有数据字段的InspectionDetail

'checklist_id', 'inspectionable_id', 'inspectionable_type', 'inspection_id',
    'observation', 'snapshot','inspection_status','work_order','attende_on','attended_by'

这里的inspection_id指的是inspections.id,inspectionable_id指的是bedrooms.id或bathrooms.id或corridor.id等,inspection_type是可以是这些模型的模型类型 卧室,浴室,走廊,厨房等等。这些都是模特。

在我的InspectionDetail中的

应该是哪些片段将检索到那个确切的 带数据的模型

如果我说

$detail = $inspection->detail()->first();
$type = $detail->type();// this should return any one of Bedroom, Bathroom, Corridor etc.

这里有一个检查有多个细节,每个细节都有一种类型(卧室,浴室,走廊等)。

我无法弄清楚如何通过改变卧室,浴室,走廊等之一来获得细节对象的类型。

1 个答案:

答案 0 :(得分:1)

您需要在InspectionDetail中创建关系映射方法:

public function inspectionable()
{
    return $this->morphTo('inspectionable');
}

然后你可以像任何其他关系一样检索相关对象(类卧室,浴室等):

$room = $detail->inspectionable;