Что я должен сделать, чтобы соответствовать парадигме MVC? - PullRequest
0 голосов
/ 13 декабря 2018

Сейчас я программирую на 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?

1 Ответ

0 голосов
/ 13 декабря 2018

Как вы соблюдаете соответствие архитектуре MVC, полностью зависит от вас.Laravel не предоставляет явно местоположение модели, чтобы разработчики могли принять решение.С учетом вышесказанного, поскольку это то, что будет выполнять операцию CRUD, оно может использоваться в модели.

Вы выполняете свои проверки в контроллере, и если все пройдет, вы передадите ссылку на вашМетод аудита внутри вашей модели.

Вы упомянули, что вам нужно включить use \ App \ Controllers \ AuditEventController , так что тогда я бы сказал, поместите это в ваш контроллер и создайте фактическийметод, который сохраняет его в вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...