【问题标题】:Codeigniter model structure for multiple database system多数据库系统的Codeigniter模型结构
【发布时间】:2016-06-24 07:36:56
【问题描述】:

我希望实现一个多数据库网络系统。我一直在尝试找出构建模型的最佳方法,这些模型可以扩展基本模型并充当数据库连接。

假设在本次讨论中,我想检索一个名为“users”的表中的所有记录,并且我在会话数据中有一个数据库标识符。

我想为我的模型添加某种结构,例如;

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

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

我的 Table/Account/Users.php 模型将扩展执行数据库连接的 Table/Account/Base.php 模型。

我想做的事情是这样的;

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

但我想我需要通过 Account/Base.php 的数据库标识符才能知道要连接到哪个数据库?

我可能完全走错了方向,所以我想听听关于如何执行此操作的意见:)

【问题讨论】:

    标签: php codeigniter model-view-controller model


    【解决方案1】:

    您不必为了使用两个不同的数据库连接而使整个模型逻辑复杂化。 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...
    

    你可以在你的模型构造函数中加载你想要的数据库连接对象,这样你就可以在那里选择你需要的东西。

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 1970-01-01
      • 2012-07-06
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多