【发布时间】:2016-11-10 10:35:49
【问题描述】:
我正在尝试在 Slim 微框架上使用 Laravel 的 Eloquent ORM,但我一直看到错误:Call to a member function connection() on null
代码如下:
dependency.php
$container['db'] = function($container) {
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($container->get('settings')['database']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
return $capsule;
};
User.php(模型类)
use Illuminate\Database\Eloquent\Model as Model;
class User extends Model {
protected $table = "users";
protected $fillable = ['name', 'email', 'password'];
}
HomeController.php(控制器类)
class Home extends Controller {
public function index($request, $response, $args) {
$user = User::find(1);
var_dump($user);
die();
$title = "Slim Auth";
$response = $this->view->render($response, 'home.php', ["title" => $title]);
return $response;
}
}
在我的 bootstrap.php 文件中需要dependency.php,在该文件中实例化了 Slim 类:
$config = [
'settings' => [
'displayErrorDetails' => true,
'view' => [
'view_path' => APP_PATH . 'views/'
],
'database' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'tutorial_slim_auth',
'username' => 'root',
'password' => 'passw0rd',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],
]
];
$app = new Slim\App($config);
而 HomeController.php 和 User.php 是通过 composer json 文件自动加载的。运行 index.php(其中还包括我的 bootstrap.php)文件后包含:
$app->run();
这给了我一个致命错误:在 null 上调用成员函数 connection()。 但是这样做:
echo '<pre>';
print_r($container['db']);
echo '</pre>';
在我的引导文件中产生了预期的结果以及在 HomeController.php 文件中调用的 var_dump 函数的结果。我该怎么办?还是我做错了什么?
【问题讨论】:
-
一个脱离上下文的问题,为什么不使用 lumen,它是一个微框架,并且支持 Eloquent ORM?
-
能否请您添加异常的完整堆栈?