我在使用超薄和雄辩的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)
关于这一点的文档中没有很多指南.有关可能原因的任何想法?
感谢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)
在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)
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |