Как добиться динамического отношения c с разрешенным нулевым отношением? - PullRequest
1 голос
/ 24 апреля 2020

То, чего я пытаюсь достичь, - это полиморфное 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 равно нулю. поэтому он выдаст ошибку.

есть ли способ вернуть нулевое отношение, проверив условие типа?

...