我是新手,我正在学习laravel 5.2,我有一个博客,我正在使用laravel,我在数据库中有一个名为“settings”的表,这是它的迁移文件:
public function up()
{
Schema::create('settings', function (Blueprint $table) {
$table->increments('id');
$table->string('site_name');
$table->text('site_description');
$table->string('about_head');
$table->text('about_description');
$table->text('about_body');
$table->timestamps();
});
}
我在此表中输入数据,现在我想将这些数据传递给所有控制器和所有方法。 我发现最好的方法是在App \ Config文件夹上创建自定义配置文件。 所以我创建了一个名为“custom”的文件,我试图访问数据库以从设置表中获取数据,这是自定义配置:
<?php
use Illuminate\Support\Facades\Config;
use App\Setting;
$setting = Setting::find(1);
return array(
'site_name' => $setting->site_name,
'site_description' => $setting->site_description,
'about_head' => $setting->about_head,
'about_description' => $setting->about_description,
'about_body' => $setting->about_body,
);
但是我的laravel根目录
出现了错误Fatal error: Call to a member function connection() on null in C:\xampp\htdocs\myblog\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 3280
知道如何修复它吗?或者至少你知道另一种将我的网站设置数据传递给所有控制器,方法和视图的解决方案吗?
感谢您的时间。
答案 0 :(得分:0)
可能添加连接 Facade将解决此问题 -
<?php
use Illuminate\Database\Connection;
use Illuminate\Support\Facades\Config;
use App\Setting;
$setting = Setting::find(1);
return array(
'site_name' => $setting->site_name,
'site_description' => $setting->site_description,
'about_head' => $setting->about_head,
'about_description' => $setting->about_description,
'about_body' => $setting->about_body,
);
您的模型似乎无法连接到数据库,这是您的主要问题。
答案 1 :(得分:0)
我不认为配置文件中的查询会起作用。您可以做的是create a service provider和use singleton。创建服务提供商:
php artisan make:provider MyConfigServiceProvider
绑定单身人士:
$this->app->singleton('myconfig', function ($app) {
return new MyConfig();
});
使用它:
$siteName = App::make('myconfig')->getConfig('site_name');
答案 2 :(得分:0)
我建议不在您使用配置时使用数据库。 我通常做的是在config文件夹中创建一个配置文件(就像你正在做的那样)并在配置文件中硬编码这些值。
P.S如果您的设置值是特定于环境的,那么将这些值放在env文件中并在配置文件中读取这些值