我正在使用這兩個庫來創建一個使用圖片的實體,vich/uploader-bundle并且我正在使用loggable提供的學說擴展記錄實體更改歷史記錄,該擴展stof/doctrine-extensions-bundle提供了atlantic18/doctrineextensions.所以問題來了:我有一個實體,它有一個 Vich 可上傳圖片字段,它使用的是帶有注釋的學說的 Gedmo 可記錄擴展。/** * @var VersionedFile * * @ORM\Embedded(class="App\Entity\Embedded\VersionedFile") * * @Gedmo\Versioned() */private $picture;/** * @var File * * @Vich\UploadableField( * mapping="user_picture", * fileNameProperty="picture.name", * size="picture.size", * mimeType="picture.mimeType", * originalName="picture.originalName", * dimensions="picture.dimensions * ) */private $pictureFile;/** * @var DateTimeInterface * * @ORM\Column(type="datetime", nullable=true) * * @Gedmo\Versioned() */private $pictureUpdatedAt;嵌入式實體類App\Entity\Embedded\VersionedFile具有所有需要的注釋,以便使用可記錄的學說擴展正確地進行版本控制。// Not the whole code but just to get the idea for property versioning/** * @ORM\Column(name="name", nullable=true) * * @Gedmo\Versioned() */protected $name;現在的問題。當我上傳文件并保留實體時,會發生以下事情。實體管理器持久化實體并調用 Gedmo 可記錄偵聽器 ( Gedmo\Loggable\LoggableListener)的 onFlush 方法。此偵聽器檢查更改并安排要插入的日志條目。問題是 VichUploader s upload listener (Vich\UploaderBundle\EventListener\Doctrine\UploadListener ) is called after the loggable listener and then the file is uploaded which changes the properties name, size, etc. The computed changes about name, size, etc. are not available in theLoggableListener` 因為它首先被調用,所以它不知道應該插入它們。我是缺少一些配置還是我做錯了什么。這個想法是記錄對圖片所做的更改。目前在數據庫中,日志條目僅包含$pictureUpdatedAt字段。我調試了問題,我能看到的只是順序,并且LoggableListener方法getObjectChangeSetData中只返回$pictureUpdatedAt已更改的字段。我認為這與 Embedded 實體沒有共同之處,因為我認為聽眾的調用順序是問題所在。我的第一個想法是更改偵聽器的優先級,但即使我這樣做,調用的順序也不會改變,主要是因為在onFlush調用時它會觸發preUpdate觸發UploadListener上傳程序包的方法。
- 1 回答
- 0 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消