雄辩的致命错误:参数传递的不是正确的实例

Cam*_*ore 4 php slim eloquent

我在使用超薄和雄辩的PHP构建端点系统的过程中,所概述这里.在我的本地开发中运行它时,下面的代码失败,根据方法的预期,看起来是致命错误

// Load Eloquent
$connFactory = new \Illuminate\Database\Connectors\ConnectionFactory();
$conn = $connFactory->make($settings);
$resolver = new \Illuminate\Database\ConnectionResolver();
$resolver->addConnection('default', $conn);
$resolver->setDefaultConnection('default');
\Illuminate\Database\Eloquent\Model::setConnectionResolver($resolver);
Run Code Online (Sandbox Code Playgroud)

实际错误是:

[Wed Aug 13 10:31:44 2014] PHP Catchable fatal error:  Argument 1 passed to
Illuminate\Database\Connectors\ConnectionFactory::__construct() must be an instance 
of Illuminate\Container\Container, none given, called in
/Users/outsider/application/index.php on line 22 and defined in
/Users/outsider/application/vendor/illuminate/database/Illuminate/Database/Connectors/ConnectionFactory.php on line 25
Run Code Online (Sandbox Code Playgroud)

关于这一点的文档中没有很多指南.有关可能原因的任何想法?

Cam*_*ore 5

感谢Manolo指出我错过了什么.我需要声明一个Container并初始化它:

$container = new Illuminate\Container\Container;
$connFactory = new \Illuminate\Database\Connectors\ConnectionFactory($container);
$conn = $connFactory->make($settings);
$resolver = new \Illuminate\Database\ConnectionResolver();
$resolver->addConnection('default', $conn);
$resolver->setDefaultConnection('default');
\Illuminate\Database\Eloquent\Model::setConnectionResolver($resolver);
Run Code Online (Sandbox Code Playgroud)


Mik*_*ola 5

在Laravel外面使用Eloquent有一种更简单的方法.你可以使用Capsule:

/* Setup Eloquent. */
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;

$capsule = new Capsule;
$capsule->addConnection([
    "driver"    => "mysql",
    "host"      => "localhost",
    "database"  => "example",
    "username"  => "root",
    "password"  => "t00r",
    "charset"   => "utf8",
    "collation" => "utf8_general_ci",
    "prefix"    => ""
]);

$capsule->setEventDispatcher(new Dispatcher(new Container));
$capsule->bootEloquent();
Run Code Online (Sandbox Code Playgroud)