多个重复查询 - Laravel

时间:2017-02-22 14:13:27

标签: php mysql laravel eloquent

我首先要显示在我的控制器中编写的代码:

public function __construct(Utility $utility)
{
 $league = $utility->checkDomainController();
 view()->share('league', $league);
 $this->league = $league;
}

public function getDashboard()
{
 return view('dashboard.dashboard', compact('activities'));
}

现在我想在控制器中存在的方法的所有视图中共享 $ league 。 ($ league仅包含一个查询)。

但是现在我面临的问题是,查询与包含视图的数字重复,并带有主视图。这里仪表板是主视图。因此,如果主视图中包含7个视图,则 $ league 上的查询将被执行7次。以下是图片:

dashboard.blade.php中包含的视图图片 Picture of views included in dashboard.blade.php

查询重复的图片 Picture of Queries getting duplicated

对此有何解决方案?有没有更好的方法来处理这个?

1 个答案:

答案 0 :(得分:1)

一些解决方案对您开放。

一种解决方案是缓存查询。只有在$league数据不经常更改时才有效。

$league = Cache::remember('users', $minutes, function () {
    return $utility->checkDomainController();
});

另一种解决方案是使用View Composer。只有在呈现特定视图时才会调用它。因此,如果您将其包含一次,则会呈现一次。

View::composer('leagues', function ($view) {
    //
});

在此处阅读有关视图作曲家的更多信息:https://laravel.com/docs/5.4/views#view-composers