Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对Laravel 5上的非对象错误调用成员函数connection()_Laravel_Eloquent_Laravel 5 - Fatal编程技术网

对Laravel 5上的非对象错误调用成员函数connection()

对Laravel 5上的非对象错误调用成员函数connection(),laravel,eloquent,laravel-5,Laravel,Eloquent,Laravel 5,我想在数据库中存储用户配置数据,我正在关注这个论坛的帖子 但当我实现它时,laravel抛出了一个错误。 我运行了composer dump autoload,但似乎没有任何功能。这里有什么问题 //文件名:app/config/settings.php use \App\Models\Setting $list = array(); $format = function(&$list, $keys, $val) use(&$format) { $keys ? $fo

我想在数据库中存储用户配置数据,我正在关注这个论坛的帖子 但当我实现它时,laravel抛出了一个错误。 我运行了composer dump autoload,但似乎没有任何功能。这里有什么问题

//文件名:app/config/settings.php

use \App\Models\Setting

$list = array();

$format = function(&$list, $keys, $val) use(&$format) {
    $keys ? $format($list[array_shift($keys)], $keys, $val) : $list = $val;
};

foreach(Setting::all() as $setting) {
    $format($list, explode('.', $setting->token), $setting->content);
}

return $list;
用法:

echo Config::get('settings.token');//返回“content”的值

完全错误

Fatal error: Call to a member function connection() on a non-object in C:\wamp\www\iapp\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 3137
Call Stack
#   Time    Memory  Function    Location
1   0.0017  247544  {main}( )   ..\index.php:0
2   0.0910  2848480 Illuminate\Foundation\Http\Kernel->handle( )    ..\index.php:58
3   0.0910  2848736 Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter( )  ..\Kernel.php:86
4   0.0917  2886304 Illuminate\Foundation\Http\Kernel->bootstrap( ) ..\Kernel.php:110
5   0.0917  2886472 Illuminate\Foundation\Application->bootstrapWith( ) ..\Kernel.php:215
6   0.0974  2994336 Illuminate\Foundation\Bootstrap\LoadConfiguration->bootstrap( ) ..\Application.php:194
7   0.0986  3025160 Illuminate\Foundation\Bootstrap\LoadConfiguration->loadConfigurationFiles( )    ..\LoadConfiguration.php:38
8   0.1407  3814624 require( 'C:\wamp\www\iapp\config\settings.php' )   ..\LoadConfiguration.php:56
9   0.1407  3814696 ConfigSetting::getSettings( )   ..\settings.php:28
10  0.1494  4488840 Illuminate\Database\Eloquent\Model::all( )  ..\settings.php:16
11  0.1496  4494520 Illuminate\Database\Eloquent\Model->newQuery( ) ..\Model.php:646
12  0.1496  4494616 Illuminate\Database\Eloquent\Model->newQueryWithoutScopes( )    ..\Model.php:1769
13  0.1496  4494688 Illuminate\Database\Eloquent\Model->newBaseQueryBuilder( )  ..\Model.php:1795
14  0.1496  4494736 Illuminate\Database\Eloquent\Model->getConnection( )    ..\Model.php:1852
15  0.1496  4494784 Illuminate\Database\Eloquent\Model::resolveConnection( )
编辑:

名称空间应用程序\模型

使用Illumb\Database\Elount\Model

类设置扩展了模型{

}


使用设置文件中的模型并不是使用它们的最佳方式


您的问题是,您的模型查询在Laravel启动其服务之前启动。这就是为什么当您尝试进行查询时,模型无法解析它的连接,因为DB服务尚未启动


如果你想做这件事,创建你自己的服务提供商并在那里更新你的配置,或者在你现有的
AppServiceProvider的
boot
方法中正确地做这件事,转到bootstrap/app.php

只是取消注释

$app->withEloquent();

Laravel6.x及更高版本中运行TestCase时,我经常遇到这个错误。我意识到单元测试是从phpunittestclass扩展而来的,而不是从Laravel TestCase扩展而来的。所以改变
PHPUnit\Framework\TestCase
Tests\TestCase


应用程序\模型\设置模型是什么样子的?此模型可以与您的数据库通信吗?您能在问题中包含代码吗?看起来您的数据库连接有问题。这个模型能与你的数据库通信吗?它在其他地方都能工作,比如普通路由和控制器,但在配置文件上不起作用。关于它有一个问题,但答案只有一半。thaks,我在lumen上发现了它,但在laravelI上没有发现。我想知道为什么启用eloquent是一个选项,但框架(模型)的主要组件完全依赖于eloquent!他们将此功能作为可选功能,以在基准测试中击败其他微框架!您好@yussan,请确保您使用的是Laravel 5而不是Laravel 4当然@alexanderarda现在我使用的是Lumen with Laravel 5 base“您的问题是,您的模型查询在Laravel启动其服务之前启动。这就是为什么当您尝试进行查询时,模型无法解析其连接,因为数据库服务尚未启动。”-这是完美的答案!刚刚意识到,啊!非常感谢。为了调试这个错误,我用头撞了一个多小时,正是因为这个。你也许可以把它移到它自己的问题和答案上,但是添加更多的关键词来帮助人们找到它。这就像一个符咒!!这应该被标记为正确答案!