如何在 Laravel 中设置全局变量(不搞乱迁移)?

How to Set Global Variable in Laravel (Without Messing up with Migrations)?

我只想从我的数据库 options table 中获取网站的标题和标语。
我尝试从 AppServiceProvider.php 获取它,但是当我删除所有 table 和 运行 PHP artisan migrate.[=23= 时,它显示 table 不存在的错误]
我也试过 Session 但最后,它把我带到了旧的 AppServiceProvider.php 方法。它工作正常,但当我们全新安装应用程序并 运行 迁移时却不行!

这就是我的 AppServiceProvider.php 看起来想知道我到底想做什么的方式。

public function boot()
{
    $site_options = array();

    $site_title = Options::where('option_name','site_title')->first();
    $site_options['site_title'] = $site_title?$site_title->option_value:'Site Title';

    $site_tagline = Options::where('option_name','site_tagline')->first();
    $site_options['site_tagline'] = $site_tagline?$site_tagline->option_value:'A Simple website!';

    view()->share('site_options',$site_options);
}

我正在 Whosebug 和其他地方寻找答案,但我不知道该怎么做。我还可以在所有控制器上创建构造函数并获取数据,但是我必须在每个视图中传递变量,这会使代码看起来很糟糕!

对此有任何标准解决方案吗?

PS:当我将此代码添加到 AppServiceProvider.php 时,播种不起作用,迁移也不起作用。我必须从 AppServiceProvider.php 中删除此代码才能迁移和播种!

你能在上面使用 try catch 吗?

try {
    $site_title = Options::where('option_name','site_title')->first();
    $site_options['site_title'] = $site_title->option_value;
} catch (\Exception $e) {
    $site_options['site_title'] = 'Site Title';
}