我首先要显示在我的控制器中编写的代码:
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次。以下是图片:
对此有何解决方案?有没有更好的方法来处理这个?
答案 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