MongoDB ve CodeIgniter [kapalı]

5 Cevap php

Herkes bana CodeIgniter MongoDB ile çalışmaya sağlayacak bir öğretici, kütüphane, vb beni işaret yardımcı olabilir?

Herhangi bir Yardım gerçekten takdir edilmektedir.

5 Cevap

Ben onun "CodeIgniter yol" emin değilim ama geçerli veritabanı bağlantısı saklamak için ekstra bir özelliği ile Mongo sınıfını genişleten bir CodeIgniter kütüphane oluşturdu.

İşte benim projeden ilgili kod dosyalarıdır.

config/mongo.php

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

libraries/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;
    }
}

Ve örnek bir denetleyici

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);
    }
}

Bu basit ve Php içinde yazılı olarak çok fazla işlevsellik olmadan Mongo için bir arayüz sağlar gibi Stephen Curran örnek ister, ben büyük soyutlama Sonra ben ne zaman biraz fazla clases bulmak eğilimindedir.

Ben veritabanı kimlik dahil yaptığı örnek artırdık. Buraya git: http://www.mongodb.org/display/DOCS/Security+and+Authentication Mongo kimlik doğrulaması hakkında okumak için, bağlandığınız Mongo Server için kimlik doğrulamasını etkinleştirmek unutmayın.

Ben de __ inşa edilecek eski tarz bir kurucu işlevi değişti ve onlar da sizin adınızı ve şifrenizi ortaya gibi Mongo Bağlantı İstisnaları taşıma duyuyorum.

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

libraries/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'));           
        }
    }
}

CodeIgniter'daki MongoDB ile çalışan başka bir yerde onunla çalışmak çok farklı olmaz.

Birlikte kurucudaki bağlamak ve daha sonra yöntemlerde kullanılan bu-> bağl $ saklamak istiyorsunuz bir MongoDB kütüphane knock.

sonra kontrolörler bağl özelliği ile doğrudan çalışmak ya da sizin için bunu yapmak için MongoDB kütüphanede birkaç yöntemleri oluşturmak ya.

Önceki here MongoDB ile çalışmak için düz PHP öğretici görmek için atın.

Ben mutlu size bunun için bir kütüphane oluşturmak istiyorum ama bunun bir fiyat ile gelirdi. :-P

Ben CI w / MongoDB kullanarak ve aşağıdaki ile geldi ediyorum. Bu benim için çalışıyor, ama biraz tweaked olabilir eminim. Ben daha sonra verdiği hakkında endişe gerekir ama şu anda ne istediğiniz.

Ben "database_conn.php" adında bir model oluşturdu

class Database_Conn extends Model {

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

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

Sonra, benim modellerden bir koleksiyon bağlamak gerekirse.

$collection = Database_Conn::_connect()->selectCollection( "COLLECTION NAME" );