Я создаю полиморфную связь, которая по умолчанию равна нулю, так как изначально не имеет связи.
Затем я создаю ассоциацию и хочу иметь возможность обновить полиморфную таблицу, чтобы иметь связь между оригиналом и преобразованным классом.
post_images:
| id | post_id | width | height | created_at | updated_at
файлов:
| id | fileable_type | fileable_id | file_disk_id | created_at | updated_at
Таким образом, в основном внутри полиморфной таблицы для типа и идентификатора по умолчанию используется значение NULL, так как он должен быть сначала обработан и преобразованв стандартный формат и т. д.
Затем я создаю связанную строку внутри преобразованной таблицы, однако я не уверен, как обновить полиморфное, чтобы иметь тип и идентификатор из преобразованной таблицы.
Я пытался сделать что-то вроде $post->images()->create(...);
, а затем попытаться сделать что-то вроде $file->where('id', $fileId)->firstOrFail()->associate($post);
, но, похоже, это просто возвращает ноль.
Итак, текущий процесс:
Загрузить файл-> создает строку в таблице файлов, которая содержит полиморфные отношения, но столбцы по умолчанию имеют значение null.
Стандартизировать файл -> затем файл конвертируется и сжимается в стандартный форматt, который используется для сайта.
Создать строку post_images -> Затем сайт создает строку для таблицы post_images, которая затем должна связать обновление строки файлов, чтобы содержать новое полиморфное отношение.
Красноречивые отношения:
File.php
public function fileable()
{
return $this->morphTo();
}
PostImage.php
public function file()
{
return $this->morphMany(File::class, 'fileable');
}
Post.php
public function images()
{
return $this->hasMany(PostImage::class);
}