Question

Quelqu'un peut-il aider à me pointer vers un tutoriel, une bibliothèque, etc. qui me permettra de travailler avec MongoDB de CodeIgniter?

Était-ce utile?

La solution

Je ne sais pas si c'est le « chemin CodeIgniter » mais je créé une bibliothèque CodeIgniter qui étend la classe mongo une propriété supplémentaire pour stocker la connexion de base de données actuelle.

Voici les fichiers de code pertinents de mon projet.

config / mongo.php

$config['mongo_server'] = null;
$config['mongo_dbname'] = 'mydb';

bibliothèques / 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;
    }
}

Et un contrôleur de l'échantillon

contrôleurs / 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);
    }
}

Autres conseils

J'aime l'exemple de Stephen Curran comme il est simple et permet une interface de Mongo sans fonctionnalité trop écrit dans Php, je tends à trouver énorme abstraction clases un peu trop parfois pour ce que je suis après.

Je l'ai étendu son exemple pour inclure l'authentification de base de données. Rendez-vous ici: http://www.mongodb.org/display/DOCS/Security + et + authentification pour en savoir plus sur l'authentification mongo, ne pas oublier d'activer l'authentification pour le serveur Mongo vous connectez.

J'ai aussi changé l'ancienne fonction constructeur de style à __construct et je gestion des connexions mongo exceptions car ils peuvent révéler votre nom d'utilisateur et mot de passe.

config / 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 */

Bibliothèques / 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'));           
        }
    }
}

Travailler avec MongoDB dans CodeIgniter ne serait pas très différent que de travailler avec elle nulle part ailleurs.

Vous pouvez frapper ensemble une bibliothèque MongoDB qui relierait dans le constructeur et stocker $ this-> Conn à utiliser dans des méthodes plus tard.

alors soit travailler directement avec la propriété conn dans vos contrôleurs ou créer quelques méthodes dans votre bibliothèque MongoDB pour le faire pour vous.

Jetez un oeil ici pour voir le tutoriel PHP simple pour travailler avec MongoDB.

Je heureux de vous créer une bibliothèque pour cela, mais il serait venu avec un prix. :-p

J'utilise MongoDB w / CI et est venu avec ce qui suit. Il fonctionne pour moi, mais je suis sûr qu'il peut être modifié quelque peu. J'inquiète peaufinage plus tard, mais il ne en ce moment ce que je veux.

J'ai créé un modèle appelé "database_conn.php"

class Database_Conn extends Model {

    function _connect() {
        $m = new Mongo();

        $db = $m->selectDB( "YOUR DATABASE NAME" );
        return $db;
    }
}

Alors, si je dois vous connecter à une collection de mes modèles.

$collection = Database_Conn::_connect()->selectCollection( "COLLECTION NAME" );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top