MongoDB и CodeIgniter

Может ли кто-нибудь помочь мне указывать мне учебник, библиотеку и т. Д., Что позволит мне работать с MongoDB от CodeIgniter?

Related of "MongoDB и CodeIgniter"

Я не уверен, что это «способ CodeIgniter», но я создал библиотеку CodeIgniter, которая расширяет класс Mongo с дополнительным свойством для хранения текущего соединения с базой данных.

Вот соответствующие файлы кода из моего проекта.

конфиг / 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; } } 

И образец контроллера

Контроллеры / 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, уделите время и погрузитесь в: p

  • Библиотека активного документа CodeIgniter MongoDB
  • Библиотека SessionIgniter MongoDB
  • Библиотека аутентификации CodeIgniter MongoDB
  • Библиотека сервера REST CodeIgniter MongoDB
  • Базовая модель CodeIgniter MongoDB

Мне нравится пример Стивена Керрана, поскольку он прост и позволяет интерфейс Mongo, не слишком много функциональности, написанной в Php, я, как правило, часто нахожу огромные абстракционные классы за то, что я за ними.

Я распространил его пример, чтобы включить проверку подлинности базы данных. Перейдите сюда: http://www.mongodb.org/display/DOCS/Security+and+Authentication, чтобы прочитать о аутентификации mongo, не забудьте включить аутентификацию для Mongo Server, к которому вы подключаетесь.

Я также изменил функцию конструктора старого стиля как __construct и обрабатываю Mongo Connection Exceptions, поскольку они могут раскрыть ваше имя пользователя и пароль.

конфиг / mongo.php

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $config['mongo_server'] = 'localhost'; $config['mongo_dbname'] = 'my_mongo_db'; $config['mongo_username'] = 'mongo_user'; $config['mongo_password'] = 'password1234'; /* End of file mongo.php */ 

библиотеки / Mongo.php

 <?php class CI_Mongo extends Mongo{ protected $db; function __construct() { // 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'); $username = $ci->config->item('mongo_username'); $password = $ci->config->item('mongo_password'); $dbname = $ci->config->item('mongo_dbname'); // Initialise Mongo - Authentication required try{ parent::__construct("mongodb://$username:$password@$server/$dbname"); $this->db = $this->$dbname; }catch(MongoConnectionException $e){ //Don't show Mongo Exceptions as they can contain authentication info $_error =& load_class('Exceptions', 'core'); exit($_error->show_error('MongoDB Connection Error', 'A MongoDB error occured while trying to connect to the database!', 'error_db')); }catch(Exception $e){ $_error =& load_class('Exceptions', 'core'); exit($_error->show_error('MongoDB Error',$e->getMessage(), 'error_db')); } } } 

Работа с MongoDB в CodeIgniter не будет отличаться от работы с ним в другом месте.

Вы могли бы сбить библиотеку MongoDB, которая соединилась бы в конструкторе и сохранила $ this-> conn, который будет использоваться в методах позже.

то либо работайте напрямую с свойством conn в своих контроллерах, либо создайте несколько методов в своей библиотеке MongoDB, чтобы сделать это за вас.

Взгляните сюда, чтобы увидеть простой учебник по PHP для работы с MongoDB.

Я бы с радостью создал для вас библиотеку, но это принесло бы цену. :-п

Я использую 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" );