当前位置:  开发笔记 > 编程语言 > 正文

MongoDB和CodeIgniter

如何解决《MongoDB和CodeIgniter》经验,为你挑选了4个好方法。

任何人都可以帮助我指向一个教程,库等,这将允许我从CodeIgniter使用MongoDB吗?



1> Stephen Curr..:

我不确定它是否是"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);
    }
}


应该使用$ ci =&get_instance().来自CI docs:这非常重要.通过引用分配允许您使用原始CodeIgniter对象而不是创建它的副本.

2> sepehr..:

MongoDB在CodeIgniter社区中得到了很好的支持,花时间潜入:p

CodeIgniter MongoDB活动文档库

CodeIgniter MongoDB会话库

CodeIgniter MongoDB认证库

CodeIgniter MongoDB REST服务器库

CodeIgniter MongoDB基础模型


谢谢.两年前的情况并不多,但我同意现在对Mongo的支持要好得多.

3> 小智..:

我喜欢Stephen Curran的例子,因为它很简单并且允许Mongo的接口而没有在Php中编写太多的功能,我倾向于发现巨大的抽象条款有时候对于我所追求的东西.

我已将其示例扩展为包含数据库身份验证.请访问:http://www.mongodb.org/display/DOCS/Security+and+Authentication以了解有关mongo身份验证的信息,不要忘记为要连接的Mongo Server启用身份验证.

我还将旧样式构造函数更改为__construct并处理Mongo Connection Exceptions,因为它们可以显示您的用户名和密码.

配置/ mongo.php



库/ Mongo.php

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



4> Phil Sturgeo..:

在CodeIgniter中使用MongoDB与在其他任何地方使用MongoDB没有多大区别.

您可以将一个MongoDB库拼凑在一起,该库将在构造函数中连接并存储$ this-> conn以便稍后在方法中使用.

然后直接使用控制器中的conn属性或在MongoDB库中创建一些方法来为您执行此操作.

看看这里看看用于MongoDB的简单PHP教程.

我很乐意为你创建一个图书馆,但它会付出代价.:-P


如果您创建了一个好的库,请与社区分享.我喜欢借助MongoDB玩这个借口.:-)
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有