Я занимаюсь созданием конечной системы на PHP, используя Slim и Eloquent, как описано здесь . При запуске в моем локальном dev код ниже не работает с тем, что, по-видимому, является фатальной ошибкой, основанной на ожидаемых методах
// 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);
Фактическая ошибка:
[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
В документах нет большого количества руководств. Любые идеи о возможной причине?
Благодаря Маноло за то, что я пропустил. Мне нужно было объявить Контейнер и инициализировать его:
$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);
по$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);
Существует более простой способ использования Eloquent вне Laravel. Вы можете использовать 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();