Laravel updateOrCreate - 未正确更新

时间:2017-07-31 08:29:03

标签: php mysql laravel eloquent

我的数据库file_typespost_filesprivate function findOrCreateFileType($fileType) { return $fileType = FileType::firstOrCreate([ 'name' => $fileType, 'slug' => str_slug($fileType, '-') ]); } 中有3个表格,当我首先将文件类型保存到我的数据库时:

        $file = File::updateOrCreate([
            'cms_id' => $inventoryRemoteId,
            'file_name' => $file->post_name,
            'file_path' => $file->guid,
        ], [
            'file_type_id' => $fileType->id,
            'file_extension' => pathinfo($file->guid)['extension'],
            'file_size' => $fileInfo['Content-Length']
        ]);

        PostFile::updateOrCreate([
          'file_id' => $file->id,
          'post_id' => $contentId,
        ],[
          'file_type_id' => $fileType->id,
        ]);

然后我将文件保存到DB并更新'content_files'表,如下所示:

attachment

我遇到的问题是,当我保存的帖子中包含2个不同类型的2个文件时,例如feature imagefile_types则会正确保存到{ {1}}表:

   ID  |  name
   --------------------
   1   |  feature_image
   --------------------
   2   |  attachment

但是,当我保存到files表时,它没有正确保存,因为它为该帖子的每个文件提供了最后一个类型:

   ID  |  file_type_id  |  name
   --------------------
   1   |       1        |  feature_image file name
   --------------------
   2   |       1        |  attachment file name

因此,由于我首先保存feature-image然后attachments,因此出于某种原因更新了file_type_id表格中feature-image的{​​{1}},以及files表中。我做错了什么,我该如何解决这个问题呢?

0 个答案:

没有答案