【问题标题】:Polymorphic relation with multiple models and retrieving type of model holding与多个模型的多态关系和检索模型持有类型
【发布时间】:2016-10-06 16:36:45
【问题描述】:

这些是模型:

检查数据字段

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是指卧室.id或者浴室.id或者走廊.id等等,inspection_type是模型的类型,可以是这些模型 卧室、浴室、走廊、厨房等等。这些都是模型。

在我的 InspectionDetail 中应该是什么 sn-p 它将检索那个确切的 数据模型

就像我说的那样

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

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

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

【问题讨论】:

  • 最好贴一些自己的真实代码,而不是a,b,c,x,y,z。
  • 其实这是一长串字段的原因

标签: php laravel eloquent


【解决方案1】:

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

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

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

$room = $detail->inspectionable;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2016-11-13
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多