Laravel | Полиморфные отношения из морфированной модели - PullRequest
0 голосов
/ 15 мая 2019

Я создаю полиморфную связь, которая по умолчанию равна нулю, так как изначально не имеет связи.

Затем я создаю ассоциацию и хочу иметь возможность обновить полиморфную таблицу, чтобы иметь связь между оригиналом и преобразованным классом.

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);
}

1 Ответ

1 голос
/ 15 мая 2019

Я думаю, вы должны просто вызывать метод сохранения отношения. Например:

$post->file()->save($file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...