我应该怎么做才能符合MVC范例?

时间:2018-12-12 22:13:32

标签: php laravel model-view-controller

现在,我正在使用PHP / Laravel进行编程,但是我认为这可能适用于任何其他MVC框架。我将使用PHP / Laravel语法。

我有一个需要非常基本的审计跟踪的应用程序。数据库中的审核表(audit_event)类似于:

(id, user_id, event_id, description, occured_at)

您猜,user_id是导致event_id的用户。 description在这里,如果您需要更详细,occured_at是事件的时间戳。

现在,我创建了一个AuditEvent模型,该模型具有与用户和事件的关系。我还写了从UserEventAuditEvent的关系。

编写审核事件的功能非常简单:

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正确的做法是什么?

1 个答案:

答案 0 :(得分:0)

如何遵循MVC架构完全取决于您。 Laravel没有明确提供Model位置,以便开发人员可以决定。话虽如此,由于这将要执行CRUD操作,因此可以放入模型中。

您将在控制器中运行检查,如果一切都通过了,您将传递对模型内部审计方法的引用。

您提到需要在其中包含 use \ App \ Controllers \ AuditEventController ,因此我想将其放入控制器中,并创建将其保存在模型中的实际方法。