Laravel |在不重复代码的情况下针对多个视图运行查询

时间:2019-04-23 22:13:06

标签: laravel laravel-5.8

我正在构建一个应用程序,该应用程序几乎针对每个视图都向数据库查询同一组命令。例如@For /F "Tokens=1-3Delims=[]() " %%A In ('Find /I /N "ConstructionTime("^<"file.cfg"')Do @Set "%%B[%%A]=%%C" @Set ConstructionTime[ @Pause ;我需要查询以获取用户登录每个视图的所有通知。在控制器中,我正在这样做:

notifications

这对于1个视图来说很好,但是我在每个视图的每个索引函数调用中都检索到它。有没有更好的方法来做到这一点而不重复代码?

就像只在1个文件中检索通知一样。

谢谢。

2 个答案:

答案 0 :(得分:4)

boot()的{​​{1}}方法中,添加以下行:

App\Providers\AppServiceProvider

这样,if(auth()->check()){ View::share('notifications', Notification::whereUserId(auth()->id())->get()); } 变量将在您的所有视图(.blade文件)中共享。

相反,如果您只想在某些特定视图中共享数据,则可以使用视图编辑器。在此处查看文档:{​​{3}}

答案 1 :(得分:0)

为什么要在前面做? ....我也遇到类似的情况,我有一个简单的应用程序,实现了传统的逐页行为,我这样做:

  • 我的页面仅加载必要的内容,包括视图数据
  • 在加载后,使用Jquery(以我的情况为例),我通过ajax在一个简单的组件中获得了最后的通知,因此,如果用户希望查看更多的通知,则可以通过两种方式做到这一点,首先,单击“加载更多”按钮,或者单击“查看所有通知”,然后,我将他与所有通知的用户一起发送到一个视图。

通过这种方式,您只需要在布局结束时加载脚本,即可始终正常工作。