在我的Laravel应用程序中放置在哪里以及如何调用帮助程序函数?



目前我有以下代码:

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

该代码位于返回特定图像视图的函数中。关键是每当用户请求此视图时,图像视图计数都应该增加,但是,我不喜欢在返回视图的函数中使用此逻辑,因此我希望创建一个:

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

在我的控制器中的某个地方(我一直在考虑把它放在我的ArtworkController中(,然后在我的函数中调用返回视图的函数。

现在我想知道这是否是一个好方法。问题是我认为到目前为止这不会起作用,因为我认为我不被允许在不先做某事的情况下从另一个控制器调用函数。

对于更复杂的事情,您可以使用服务。你在那里输入业务逻辑或复杂的操作。然后,您可以在其他服务或多个控制器中调用此服务 - 无论您需要什么。

关于上面的代码,它可以真正重构为单行,因此可能不需要将其提取到其他方法中。简化的代码如下所示:

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;
}

最新更新