Php 在使用数据库时对非对象调用成员函数connection()时出错

Php 在使用数据库时对非对象调用成员函数connection()时出错,php,mysql,cartalyst-sentry,illuminate-container,Php,Mysql,Cartalyst Sentry,Illuminate Container,我用Composer安装了Sentry,因此它也安装了数据库。安装成功了,我已经完成了哨兵文档中的所有工作。我试图用一个简单的代码将用户添加到数据库中。但是,它给了我以下错误消息: Fatal error: Call to a member function connection() on a non-object in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\ilhan\vendor\illuminate\databas

我用Composer安装了Sentry,因此它也安装了数据库。安装成功了,我已经完成了哨兵文档中的所有工作。我试图用一个简单的代码将用户添加到数据库中。但是,它给了我以下错误消息:

Fatal error: Call to a member function connection() on a non-object in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\ilhan\vendor\illuminate\database\Illuminate\Database\Eloquent\Model.php on line 2472
我的代码如下:

<?php
include_once "vendor/autoload.php";


use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;

$capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'ilhantestdb',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
]);



use Cartalyst\Sentry\Sentry as Sentry;


try
{
    $user = new Sentry;
    // Create the user
    $user->createUser(array(
        'email'     => 'john.doe@example.com',
        'password'  => 'test',
        'activated' => true,
    ));

    // Find the group using the group id
    $adminGroup = Sentry::findGroupById(1);

    // Assign the group to the user
    $user->addGroup($adminGroup);
}
catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
{
    echo 'Login field is required.';
}
catch (Cartalyst\Sentry\Users\PasswordRequiredException $e)
{
    echo 'Password field is required.';
}
catch (Cartalyst\Sentry\Users\UserExistsException $e)
{
    echo 'User with this login already exists.';
}
catch (Cartalyst\Sentry\Groups\GroupNotFoundException $e)
{
    echo 'Group was not found.';
}

您还必须启动ORM。文档对此并不十分清楚

use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;

$capsule->addConnection([
     ...
]);

$capsule->bootEloquent();

您还必须启动ORM。文档对此并不十分清楚

use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;

$capsule->addConnection([
     ...
]);

$capsule->bootEloquent();

尝试将胶囊设置为全局。我不能和Sentry说话,但我正试图在一个项目中使用Capsule,我自己也遇到了同样的问题

看看这里:您将看到其中的许多便利函数都依赖于设置
static::$instance
变量,该变量设置为on

在我的例子中,我尝试使用$capsule,而不将其设置为全局。我最终需要做的是像这样编写查询
$capsule->getConnection()->table('foo')->get()
。在您的例子中,我认为Sentry正在试图通过静态类方法访问Eloquent和Capsule


tl;dr Run
$capsule->setAsGlobal()

尝试将胶囊设置为全局。我不能和Sentry说话,但我正试图在一个项目中使用Capsule,我自己也遇到了同样的问题

看看这里:您将看到其中的许多便利函数都依赖于设置
static::$instance
变量,该变量设置为on

在我的例子中,我尝试使用$capsule,而不将其设置为全局。我最终需要做的是像这样编写查询
$capsule->getConnection()->table('foo')->get()
。在您的例子中,我认为Sentry正在试图通过静态类方法访问Eloquent和Capsule


tl;dr Run
$capsule->setAsGlobal()

我花了好几个小时在这上面!这解决了我的问题,谢谢!我花了好几个小时在这上面!这解决了我的问题,谢谢!