现在,我正在使用PHP / Laravel进行编程,但是我认为这可能适用于任何其他MVC框架。我将使用PHP / Laravel语法。
我有一个需要非常基本的审计跟踪的应用程序。数据库中的审核表(audit_event
)类似于:
(id, user_id, event_id, description, occured_at)
您猜,user_id
是导致event_id
的用户。 description
在这里,如果您需要更详细,occured_at
是事件的时间戳。
现在,我创建了一个AuditEvent
模型,该模型具有与用户和事件的关系。我还写了从User
和Event
到AuditEvent
的关系。
编写审核事件的功能非常简单:
public static function audit($event, $description = "") {
$id = \Auth::user()->id;
$ae = new AuditEvent();
$ae->user_id = $id;
$ae->event_id = $event;
$ae->description = $description;
$ae->save();
return null;
}
我的问题是...该功能应该在哪里?应该在模型中,还是应该创建一个控制器AuditEventController
并将其放置在模型中?
调用函数时,必须包含
use \App\Controllers\AuditEventController
并调用它
AuditEventController::audit(5, "whatever")
我知道将函数放置在模型中也可以,但是...遵循MVC正确的做法是什么?
答案 0 :(得分:0)
如何遵循MVC架构完全取决于您。 Laravel没有明确提供Model位置,以便开发人员可以决定。话虽如此,由于这将要执行CRUD操作,因此可以放入模型中。
您将在控制器中运行检查,如果一切都通过了,您将传递对模型内部审计方法的引用。
您提到需要在其中包含 use \ App \ Controllers \ AuditEventController ,因此我想将其放入控制器中,并创建将其保存在模型中的实际方法。