gpt4 book ai didi

php - Controller 或模型中的删除文件方法?

转载 作者:行者123 更新时间:2023-12-02 21:37:25 27 4
gpt4 key购买 nike

我正在使用 Laravel 4 制作一个网络应用程序,在这个应用程序中我有一些文章。每篇文章都有多个图片。现在,当我想删除一篇文章时,我还必须删除属于该文章的图像。我想知道,我应该把图像删除方法放在哪里。我可以把它放在文章 Controller 、图像 Controller 或图像模型中。

由于我还必须能够在不触及文章的情况下单独删除图像,因此让文章 Controller 删除文件是没有意义的。那么该放在哪里呢?图像模型还是图像 Controller ?我认为图像模型。

编辑:我使用 Laravel ORM,所有文章都链接到它们的图像。删除一篇文章也会删除数据库中的所有图像。我只是想知道,从文件系统中删除应该去哪里..

最佳答案

首先,模型是一个。它不是复数的 - 您可以在这里阅读更多相关信息:php - How should a model be structured in MVC? .

如果您使用的是 MySQL 数据库,您可以查看 ON CASCADE DELETE - 这将删除数据库中与文章相关的所有图像。如果您不想在数据库端执行此操作,您可以查看 Entity\Repository pattern ,这可以通过使用类似 Doctrine 的 ORM 轻松实现。 。这将允许您为 ON CASCADE DELETE 的 php 端版本注释“实体”(具有类成员、属性和一些 getter/setter 的域对象)。

您的 Controller 应该不执行任何业务逻辑。在模型层中执行此操作 - 这意味着您的 Controller 将仅调用方法并从模型层获取响应

总之,在数据库中或通过 ORM 的注释(例如学说)链接您的文章和图像(实体),这样当您删除其中一篇时,其他的也会被删除.

最后,如果这对您来说太多了,请在执行文章(实体)的删除(存储库)时将用于删除图像的代码放入同一文件中。


补充:如果图像路径未存储在数据库中,并且您确实想要删除物理文件,则应该使用 Single Responsibility 编写外部服务(类)。处理文件删除。然后,删除文章的代码将调用该服务。这意味着您的代码将更具可测试性,并且您可以抛出自定义异常来确定出现问题(例如无法删除图像)。

关于php - Controller 或模型中的删除文件方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com