То, чего я пытаюсь достичь, - это полиморфное c отношение таблицы, называемой «вопросы»
Quesions
-------------
id
title
description
type
metadata_type
metadata_id
Question
, может быть трех типов: text-type-question
, choice-question
, opinion-scale
. text-type-question не имеет никакой таблицы отношений, для этого требуются только базовые поля заголовка и описания. но для двух других требуются дополнительные метаданные, которые находятся в двух других таблицах, модель которых указана в metadata_type
То, что я пытался сделать, это
class SurveyQuestion extends Model
{
public function metadata()
{
return $this->hasOne(app($this->metadata_type));
}
}
Это возвращает мне метаданные, но мои text-type-question
не имеет таблицы отношений, ie $this->metadata_type
равно нулю. поэтому он выдаст ошибку.
есть ли способ вернуть нулевое отношение, проверив условие типа?