【发布时间】:2011-11-14 15:58:15
【问题描述】:
作为大学项目的一部分,我正在用 PHP 开发一个 Web 应用程序,并尝试尽可能地遵循 MVC 原则。我没有使用现成的框架,因为我希望尽可能多的项目成为我的工作,以帮助获得更高的分数。
要从数据库中删除一个项目(每个项目都有一个 id、status、title、parent_id),我会执行以下过程....
- 用户点击删除按钮并被要求确认
- 当点击确认加载一个调用控制器的“页面”时,会启动一个存储在控制器对象中的模型
- 调用模型对象中的方法以根据 URL 中的 ID 从数据库中加载项目
- 我在模型中编辑状态属性以将项目标记为已删除
- 然后我将模型保存到实际上删除它的数据库中。
我还想删除数据库中刚刚删除的项目的所有子项目。最好的地方在哪里?在控制器中?在单独的函数文件中?在模型文件中?
我对整个 MVC 想法还很陌生,因此非常感谢任何帮助/建议。
【问题讨论】:
-
删除模型时删除模型的相关记录是一个实现细节,应该在模型中完成并且对控制器隐藏。这是模型明确的用途,也是您希望将此逻辑提炼到模型层的最大原因。
-
或使用 ON DELETE CASCADE 创建数据库关系。 (这就是我通常做的)。虽然这不是很 MVC :P