Laravel | 运行 无需重复代码即可查询多个视图
Laravel | Running Query For Multiple Views Without Duplicating Code
我正在构建一个应用程序,它可以为几乎每个视图向数据库查询同一组命令。例如,notifications
;我需要查询以获取用户登录的每个视图的所有用户通知。在控制器中我这样做:
public function index() {
$notifications = Notification::whereUserId(Auth::user()->id)->get();
return view('home', compact('notifications'));
}
这适用于 1 个视图,但我在每个视图的每个索引函数调用中检索它。有没有更好的方法来做到这一点而无需重复代码?
喜欢仅在 1 个文件中检索通知。
谢谢。
在 App\Providers\AppServiceProvider
的 boot()
方法中添加以下行:
if(auth()->check()){
View::share('notifications', Notification::whereUserId(auth()->id())->get());
}
这样 notifications
变量将在您的所有视图(.blade 文件)中共享。
相反,如果您只想在某些特定视图中共享数据,则可以使用视图编辑器。在此处查看文档:https://laravel.com/docs/5.8/views#view-composers
为什么做在前面? ....我有类似的情况,我有一个简单的应用程序,实现传统的逐页行为,我这样做:
- 我的页面只加载必要的内容,包括视图的数据
- 加载后,使用 Jquery(在我的例子中),我通过 ajax 在一个简单的组件中获得最后的通知,所以,如果用户想看到更多通知,他可以这样做它有两种方式,首先,单击 "Load more" 按钮,或者单击 "See all notifications",然后,我将他发送到包含所有通知用户的一个视图。
这样,你只需要在布局结束时加载脚本,就可以一直工作。
我正在构建一个应用程序,它可以为几乎每个视图向数据库查询同一组命令。例如,notifications
;我需要查询以获取用户登录的每个视图的所有用户通知。在控制器中我这样做:
public function index() {
$notifications = Notification::whereUserId(Auth::user()->id)->get();
return view('home', compact('notifications'));
}
这适用于 1 个视图,但我在每个视图的每个索引函数调用中检索它。有没有更好的方法来做到这一点而无需重复代码?
喜欢仅在 1 个文件中检索通知。
谢谢。
在 App\Providers\AppServiceProvider
的 boot()
方法中添加以下行:
if(auth()->check()){
View::share('notifications', Notification::whereUserId(auth()->id())->get());
}
这样 notifications
变量将在您的所有视图(.blade 文件)中共享。
相反,如果您只想在某些特定视图中共享数据,则可以使用视图编辑器。在此处查看文档:https://laravel.com/docs/5.8/views#view-composers
为什么做在前面? ....我有类似的情况,我有一个简单的应用程序,实现传统的逐页行为,我这样做:
- 我的页面只加载必要的内容,包括视图的数据
- 加载后,使用 Jquery(在我的例子中),我通过 ajax 在一个简单的组件中获得最后的通知,所以,如果用户想看到更多通知,他可以这样做它有两种方式,首先,单击 "Load more" 按钮,或者单击 "See all notifications",然后,我将他发送到包含所有通知用户的一个视图。
这样,你只需要在布局结束时加载脚本,就可以一直工作。