【问题标题】:CodeIgniter with PHP Activerecord Spark Multiple DatabasesCodeIgniter 与 PHP Activerecord Spark 多个数据库
【发布时间】:2013-01-22 13:20:12
【问题描述】:

到目前为止,我真的很喜欢 CodeIgniter 如何与 PHP ActiveRecord ORM 工具一起使用,

我将如何指定在我的模型中使用哪个连接?

我的 config/database.php 文件设置了 2 个连接:$db['default']$db['myOtherDb']

谢谢

【问题讨论】:

    标签: php codeigniter database-connection phpactiverecord


    【解决方案1】:

    您可以在控制器内部添加:

    var $db_1, $db_2;
    function __construct()
    {
        parent::__construct();
    
        $db1_param = 'mysql://database_username:password@localhost/database_name?char_set=utf8&dbcollat=utf8_general_ci';
        $db2_param = 'mysql://database_username:password@localhost/database_name?char_set=utf8&dbcollat=utf8_general_ci';
    
        $this->db_1 = $this->load->database($db1_param, TRUE);
        $this->db_2 = $this->load->database($db2_param, TRUE);
    }
    

    那么你的处理程序是: $this->db_1 , $this->db_2

    【讨论】:

    • 我知道在使用本机 CI DB 实现时可以这样做。这是否适用于 PHP ActiveRecord Spark?
    • 只要你的 Config 设置为允许活动记录,那么这与不带任何参数(即默认数据库)的 $this->load->database() 相同
    • 在 PHP ActiveRecord 模型中,我不将 db 称为 $this->db,而是简单地调用 PHP ActiveRecord 方法(如 create、find_by_sql 等),所以我的示例方法是:public function getRequestsAndComments() { $query = "SELECT * FROM request; $results = self::find_by_sql($query); return $results; }
    【解决方案2】:

    load->database函数中指定新的数据库名称,

    $otherdb = $this->load->database('myotherdb', TRUE);
    

    Refer this for more info

    【讨论】:

    • 我知道在使用本机 CI DB 实现时可以这样做。这是否适用于 PHP ActiveRecord Spark?
    【解决方案3】:

    更新:

    我通过在我的 ActiveRecord 模型中的 IDE 中调用自动完成功能并检查可用的方法/属性找到了我的解决方案,其中一个属性是 $connection,我们可以将其设置为我们想要使用的连接,所以在我的模型:

    public static $connection = 'byOtherDb';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多