Laravel 5.3对数据库进行查询并将其传递给所有视图

时间:2017-02-02 08:41:15

标签: php laravel laravel-5 laravel-5.3

我有一些动态数据,我想从数据库中获取并将其传递给所有视图。我试图从互联网上做一些例子,但它们似乎不适用于我的情况,如

public function boot(){}

我无法进行数据库查询只传递硬编码值。 我尝试过的另一种方法是基本控制器,但视图在访问变量

时给出了错误
$query = DB::table('users')->first();
\View::share('user', $query);

任何有基于BaseController的解决方案都会受到赞赏,如果我错过了什么,请提醒我

3 个答案:

答案 0 :(得分:2)

根据https://laravel.com/docs/5.4/views#sharing-data-with-all-views的文档:

  

有时,您可能需要与应用程序呈现的所有视图共享一段数据。您可以使用view facade的共享方法执行此操作。通常,您应该在服务提供商的引导方法中发出共享呼叫。

再次作为该网站的一个示例,您应该将其添加到您的某个服务提供商:

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $query = DB::table('users')->first();
        \View::share('user', $query);
    }
}

答案 1 :(得分:0)

您可以使用视图编辑器。 "视图组合器是在呈现视图时调用的回调或类方法。如果每次渲染视图时都希望将数据绑定到视图,则视图编写器可以帮助您将该逻辑组织到一个位置。"

您可以在https://laravel.com/docs/5.3/views#view-composers

上找到更多详情

答案 2 :(得分:0)

它正在启动:

View :: share(' variabelname',DB table first()等等)

但是我遇到了一个问题:

如果我删除表或删除表,然后运行迁移和种子,我得到错误

purchase price $2,000 paint $50 new tires $200

所以我必须在任何迁移刷新等之前从App Service Provider注释掉该行。