多个数据库系统的Codeigniter模型结构

时间:2016-03-09 18:38:15

标签: php codeigniter model-view-controller model

我正在寻求实现一个多数据库Web系统。我一直试图找出构建扩展基本模型的模型的最佳方法,并将其作为数据库连接。

让我们说这个讨论我想要检索名为“users”的表中的所有记录,并且我在会话数据中有一个数据库标识符。

我想到我的模型有某种结构,比如;

/Table
  /Account
      /User.php
      /Base.php
  /Base.php

Table文件夹中的我的base.php将具有我的标准CRUD功能,我在考虑根据模型名称执行操作?

我的表/帐户/ Users.php模型将扩展表/帐户/ Base.php模型,该模型可以实现数据库连接。

我希望能做的事情是这样的;

$users = $this->load->model('/Table/Account/User');
$users->get(...);

但我想我需要通过Account / Base.php的数据库标识符来了解要连接的数据库?

我可能会用这个完全错误的方向,所以我会听到关于如何执行此操作的意见:)

1 个答案:

答案 0 :(得分:0)

您不必像使用两个不同的数据库连接那样使整个模型逻辑复杂化。 Codeigniter documentation有一个很直接的例子。

如果您使用的是CI版本2,则可以按照以下简单规则使用多个数据库连接:

$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
  

注意:更改单词" group_one"和" group_two"具体而言   您要连接的组名(或者您可以传递连接   值如上所示)。请参阅codeigniter的official documentation of the database configuration

通过将第二个参数设置为TRUE(布尔值),该函数将返回数据库对象。

以这种方式连接时,您将使用对象名称来发出命令,而不是本指南中使用的语法。换句话说,而不是发出命令:

$this->db->query();
$this->db->result();
etc...

您将使用:

$DB1->query();
$DB1->result();
etc...

您可以在模型构造函数中加载所需的数据库连接对象,以便在那里选择所需的内容。

相关问题