我已经安装了Sentry和Composer,因此它也安装了Illuminate数据库。安装成功,我在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.';
}
即使我不知道如何调试它。另外,我认为既然Illuminate带有Sentry,Sentry应该编码如何处理Illuminate,因此我不需要太多配置。文档很差,我无法找到如何处理此错误。
答案 0 :(得分:4)
您还必须启动ORM。文档对此并不十分清楚。
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;
$capsule->addConnection([
...
]);
$capsule->bootEloquent();
答案 1 :(得分:1)
尝试将Capsule设置为全局。我不能和Sentry说话,但是我自己尝试在项目中使用Capsule,并且遇到了同样的问题。
看看这里:https://github.com/illuminate/database/blob/master/Capsule/Manager.php#L113您会发现其中的许多便利功能取决于设置static::$instance
变量集,该变量设置在https://github.com/illuminate/database/blob/master/Capsule/Manager.php#L192上。
在我的情况下,我试图使用$ capsule而不将其设置为全局。我最后需要做的就是编写我的查询$capsule->getConnection()->table('foo')->get()
。在您的情况下,我认为Sentry正试图通过静态类方法访问Eloquent和Capsule。
tl; dr运行$capsule->setAsGlobal();