Laravel Эффективная интеграция в Codeigniter

Я пытаюсь использовать красноречивый orm внутри codeigniter.

Ниже приведен мой файл composer.json

"require": { "php": ">=5.5.0", "illuminate/database": "5.0" }, "autoload": { "classmap": [ "application/models" ] } 

В файле index.php я добавил

 require 'vendor/autoload.php'; 

Я создал файл Eloquent.php в приложении / моделях, чтобы инициировать красноречивый

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $CI = & get_instance(); $config = $CI->db; $pdo = new PDO('mysql:host='.$config->hostname.';dbname='.$config->database, $config->username, $config->password); $drivers = array( 'mysql' => '\Illuminate\Database\MySqlConnection', 'pgsql' => '\Illuminate\Database\PostgresConnection', 'sqlite' => '\Illuminate\Database\SQLiteConnection', ); $conn = new $drivers['mysql']($pdo, $config->database, $config->dbprefix); $resolver = new Illuminate\Database\ConnectionResolver; $resolver->addConnection('default', $conn); $resolver->setDefaultConnection('default'); \Illuminate\Database\Eloquent\Model::setConnectionResolver($resolver); по <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $CI = & get_instance(); $config = $CI->db; $pdo = new PDO('mysql:host='.$config->hostname.';dbname='.$config->database, $config->username, $config->password); $drivers = array( 'mysql' => '\Illuminate\Database\MySqlConnection', 'pgsql' => '\Illuminate\Database\PostgresConnection', 'sqlite' => '\Illuminate\Database\SQLiteConnection', ); $conn = new $drivers['mysql']($pdo, $config->database, $config->dbprefix); $resolver = new Illuminate\Database\ConnectionResolver; $resolver->addConnection('default', $conn); $resolver->setDefaultConnection('default'); \Illuminate\Database\Eloquent\Model::setConnectionResolver($resolver); 

следующая моя модель Foo.php

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); require_once(APPPATH.'models/Eloquent.php'); use Illuminate\Database\Eloquent\Model as Eloquent; class Foo extends Eloquent { public $table = "foos"; } 

В контроллере Foos.php я попробовал что-то вроде следующего

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Foos extends CI_Controller { public function __construct() { parent::__construct(); } public function index() { var_dump(Foo::all()); } } 

Но он возвращает следующую ошибку.

 Severity: Notice Message: Undefined property: Foos::$db Filename: models/Eloquent.php Line Number: 5 

Что я делаю неправильно?

Я считаю, что вам не хватает другой классной капсулы. Проверьте папку поставщика. Он находится в /.../vendor/illuminate/database/Illuminate/Database/Capsule/Manager.php

Вы можете использовать это как

 require 'vendor/autoload.php'; use Illuminate\Database\Capsule\Manager as Capsule; $CONFIG['db'] = array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'testDB', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '' ); $capsule = new Capsule; $capsule->addConnection($CONFIG['db']); // Make this Capsule instance available globally via static methods... (optional) $capsule->setAsGlobal(); // Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher()) $capsule->bootEloquent(); 

После того как вы сделали это глобальным, вы можете вызвать его, используя: FooModel.php

 use Illuminate\Database\Eloquent\Model as Eloquent; class Foo extends Eloquent { public $table = "foos"; } 

и назовите его как:

 use \path\to\Foo; Foo::all(); 

Вам не было вызова функции bootEloquent ().

Надеюсь, поможет! 🙂