开发者社区> 问答> 正文

如何在CakePHP中为一个模型动态使用多个数据库?mysql

好的,我的第一个问题被修改了很多次,以至于我选择删除它并重新格式化我的问题。我已经制作了一个带有不同型号名称的小型测试用例项目,以找到解决我的问题的合适方法。

警告:请勿将数据库与表混淆

动机:我将用户数据分为多个数据库,以解决法律和性能问题。

目前,我正在开发一个CakePHP项目,该项目具有多个User,每个项目User都有其自己的数据库,其中包含多个表(cars是表之一)。现在,我需要先解释一下:

每个人User都有自己的数据库(不是表,数据库),因此数据库名称如下。

[DATABASE] app(这是应用程序的主数据库) [表] users [TABLE] permissions(与此问题无关) [数据库] app_user1(User.id1拥有整个数据库) [TABLE] cars(由1 完全拥有的表User.id) [DATABASE] app_user2(User.id2拥有整个数据库) [TABLE] cars(由2 完全拥有的表User.id) 等等... 我做了一张小图,可以阐明数据库 / 表的定义及其与模型的关系:

如何在CakePHP中为一个模型动态使用多个数据库

问题!!!

在动态创建登录及其数据库之前,我不知道要连接到哪个数据库。UserUserapp/Config/database.php

因此,我目前在Model和ConnectionManager类上编写扩展,以绕过CakePHP的基本数据库行为。因此,Car模型知道要使用哪个数据库。但我只是觉得这可以更轻松地完成!

所以我想这全都归结为一个问题:

有更简单的方法吗?

感谢所有花时间和精力阅读和理解我的问题的人!

展开
收起
保持可爱mmm 2020-05-17 17:11:51 633 0
1 条回答
写回答
取消 提交回答
  • 无论如何,这是我的最终解决方案,我将其放入app/Model/AppModel.php:

    class AppModel extends Model { /** * Connects to specified database * * @param String name of different database to connect with. * @param String name of existing datasource * @return boolean true on success, false on failure * @access public */ public function setDatabase($database, $datasource = 'default') { $nds = $datasource . '_' . $database;
    $db = &ConnectionManager::getDataSource($datasource);

      $db->setConfig(array(
        'name'       => $nds,
        'database'   => $database,
        'persistent' => false
      ));
    
      if ( $ds = ConnectionManager::create($nds, $db->config) ) {
        $this->useDbConfig  = $nds;
        $this->cacheQueries = false;
        return true;
      }
    
      return false;
    }
    

    } 这就是我在我中使用它的方式app/Controller/CarsController.php:

    class CarsController extends AppController { public function index() { $this->Car->setDatabase('cake_sandbox_client3');

    $cars = $this->Car->find('all');
    
    $this->set('cars', $cars);
    

    }

    } 我敢打赌,我不是这个问题的第一个或最后一个。所以我真的希望这些信息能找到人们和CakePHP社区。来源:stack overflow

    2020-05-17 17:19:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像