В моем веб-приложении пользователи смогут сохранять проанализированный контент в таблицу с именем field_results
.
Однако эта модель должна ссылаться на два полиморфных отношения:
FieldResults.php
:
// A field result morphs to either a document field or email field.
public function fieldable()
{
return $this->morphTo();
}
// A field result morphs to either a document or email.
public function typeable()
{
return $this->morphTo();
}
fieldable
относится к:
- DocumentFields
- EmailFields
и typeable
означает:
- Документы
- Электронные письма
В моих моделях DocumentField
и EmailField
я определил это соотношение:
// A field will have a final result.
public function result()
{
return $this->morphOne(FieldResult::class, 'fieldable');
}
И в моих моделях Document
и Email
я определил это:
public function results()
{
return $this->morphMany(FieldRuleResult::class, 'typeable');
}
Итак, рассмотрим цикл ниже, где мне нужно сохранить некоторый контент, который будет ссылаться на конкретное поле документа / поле электронной почты и конкретный документ / электронную почту.
foreach ($document->fields as $field) {
$content = $field->content->text;
//Save the content to `FieldResult
$field->result()->create(['content' => $content]);
}
Выше будут установлены только значения дляfieldable
morph:
SQLSTATE[HY000]: General error: 1364 : Field 'typeable_type' doesn't have a default value [...]
Если я изменю его для сохранения в документе, я получу ошибку ниже: *
//Save the content to `FieldResult
$document->result()->create(['content' => $content]);
SQLSTATE[HY000]: General error: 1364 Field 'fieldable_type' doesn't have a default value [...]
Как я могу это сделать, поэтому мойМодель FieldResult
может иметь две полиморфные связи?