سؤال

هل يمكن لأي شخص أن يساعد في توجيهي إلى برنامج تعليمي، مكتبة، إلخ. هذا سيسمح لي بالعمل مع 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;
    }
}

وعينة وحدة تحكم

تحكم / المشاركات

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

نصائح أخرى

أنا أحب مثال ستيفن كوران لأنه بسيط ويسمح بواجهة إلى Mongo بدون وظائف مكتوبة داخل PHP، أميل إلى إيجاد تخجر ضخم كثيرا في بعض الأحيان في بعض الأحيان لما أنا بعده.

لقد مددت مثاله لتضمين مصادقة قاعدة البيانات. اذهب الى هنا: http://www.mongodb.org/display/docs/security+authentication. لقراءة المصادقة منغو، لا تنس أن تمكين المصادقة لخادم Mongo الذي تتصل به.

لقد غيرت أيضا وظيفة منشئ النمط القديم لتكون __Construct والمعالجة استثناءات اتصال Mongo حيث يمكن أن تكشف عن اسم المستخدم وكلمة المرور الخاصة بك.

التكوين / 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 لن يكون مختلفا كثيرا عن العمل معه في أي مكان آخر.

يمكنك أن تدق مجموعة منغودب من شأنها أن تتصل في المنشئ وتخزين $ هذا-> conn المراد استخدامها في الأساليب في وقت لاحق.

ثم يعملون مباشرة مع خاصية CONE في وحدات التحكم الخاصة بك أو إنشاء طرق قليلة في مكتبة Mongodb الخاصة بك للقيام بذلك من أجلك.

إلق نظرة هنا لرؤية البرنامج التعليمي PHP العادي للعمل مع MongoDB.

أنا لحسن الحظ أنشئك مكتبة لهذا الأمر، لكنه سيأتي بسعر. :-P.

أنا أستخدم MongoDB W / CI وتوصل إلى ما يلي. إنه يعمل بالنسبة لي، لكنني متأكد من أنه يمكن تعديله إلى حد ما. سوف تقلق بشأن التغيير والتبديل في وقت لاحق ولكن الآن يفعل ما أريد.

قمت بإنشاء نموذج يسمى "قاعدة البيانات_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" );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top