Я не уверен, что это «путь CodeIgniter», но я создал библиотеку CodeIgniter, которая расширяет класс Mongo с дополнительным свойством для хранения текущей базы данных связь.
Вот соответствующие файлы кода из моего проекта.
config / mongo.php
$config['mongo_server'] = null;
$config['mongo_dbname'] = 'mydb';
библиотеки / Mongo.php
class CI_Mongo extends Mongo
{
var $db;
function CI_Mongo()
{
// Fetch CodeIgniter instance
$ci = get_instance();
// Load Mongo configuration file
$ci->load->config('mongo');
// Fetch Mongo server and database configuration
$server = $ci->config->item('mongo_server');
$dbname = $ci->config->item('mongo_dbname');
// Initialise Mongo
if ($server)
{
parent::__construct($server);
}
else
{
parent::__construct();
}
$this->db = $this->$dbname;
}
}
И пример контроллера
controllers / posts.php
class Posts extends Controller
{
function Posts()
{
parent::Controller();
}
function index()
{
$posts = $this->mongo->db->posts->find();
foreach ($posts as $id => $post)
{
var_dump($id);
var_dump($post);
}
}
function create()
{
$post = array('title' => 'Test post');
$this->mongo->db->posts->insert($post);
var_dump($post);
}
}
Работа с MongoDB в CodeIgniter ничем не отличается от работы с ним где-либо еще.
Вы можете собрать библиотеку MongoDB, которая будет подключаться в конструкторе и хранить $ this-> conn для дальнейшего использования в методах.
затем либо работайте напрямую со свойством conn в ваших контроллерах, либо создайте несколько методов в вашей библиотеке MongoDB, чтобы сделать это за вас.
Взгляните здесь , чтобы увидеть простое руководство по PHP для работы с MongoDB.
Я с радостью создам для вас библиотеку, но за это придется заплатить. :-p
Я использую MongoDB w/ CI и придумал следующее. Это работает для меня, но я уверен, что это можно немного подправить. Я подумаю о доработке позже, но сейчас это делает то, что я хочу.
Я создал модель под названием "database_conn.php"
class Database_Conn extends Model {
function _connect() {
$m = new Mongo();
$db = $m->selectDB( "YOUR DATABASE NAME" );
return $db;
}
}
Затем, если мне нужно подключиться к коллекции из моей модели.
$collection = Database_Conn::_connect()->selectCollection( "COLLECTION NAME" );