Где поставить и как вызвать вспомогательную функцию в моем приложении Laravel? - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время у меня есть этот код:

$image = Image::find($id);
$views = $image->views;
$image->views = $views + 1;
$image->save();

Код находится в функции, которая возвращает представление для конкретного изображения.Дело в том, что всякий раз, когда пользователь запрашивает это представление, количество просмотров изображений должно увеличиваться, однако мне не нравится иметь эту логику в функции, которая возвращает представление, поэтому я надеюсь создать:

public function updateImageViews() {
    logic that updates views;
}

где-то в моих контроллерах (я думал о том, чтобы поместить его в мой ArtworkController), а затем просто вызвать функцию в моей функции, которая возвращает представление.

Теперь мне интересно, является ли этохороший способ сделать это.Проблема в том, что я не думаю, что это будет работать на данный момент, так как я не думаю, что мне разрешено вызывать функцию из другого контроллера без каких-либо предварительных действий.

1 Ответ

0 голосов
/ 17 октября 2018

Для более сложных вещей вы пользуетесь услугами.Вы помещаете туда бизнес-логику или сложные операции.Затем вы можете вызывать эту службу в других службах или на нескольких контроллерах - все, что вам нужно.

Что касается приведенного выше кода, то он может быть действительно преобразован в одну строку, поэтому может не потребоваться извлекать его в другой метод.Упрощенный код для этого выглядит следующим образом:

Image::find($id)->increment('views');

Однако, если вы действительно хотите где-то извлечь код, я бы использовал для такого простого кода только модель (в данном случае Image) со статическим методом.:

public static function updateViews($id)
{
    $image = static::find($id);
    $views = $image->views;
    $image->views = $views + 1;
    $image->save();

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