php - (Cake)PHP - 使用来自主数据库的数据更新子数据库

标签 php mysql sql cakephp

我正在使用适用于 PHP 的 CakePHP(最新版本)框架开发一个应用程序,它将多个 CMS 安装与一个注册表单结合在一起。我正在使用 MySql 数据库。问题是我无法修改 CMS 代码,我只能修改数据库数据,因为非常频繁的 CMS 更新会覆盖我的修改。

这个想法是系统将保留一个主用户表,如图所示,其中包含共享数据。主 Users 表和子 Users 表的表模型相同,除了一些 CMS 安装特定列(如简化图中所示)。

现在我正在尝试找出一种方法来反射(reflect)我在主数据库(插入和更新)上所做的更改,以在所有子数据库上发生。因此,当我在我的 CakePHP 应用程序中进行更改时,我希望那些共享的字段在所有子数据库实例中得到更新。

Diagram (can't post images yet, sorry)

一种解决方案是为应用程序中的每个操作手动编写 MySQL 查询,但这似乎是多余且烦人的。

我怎样才能让我的应用程序重复我在我的 MASTER 上对每个 CHILD 所做的所有查询。基本上,如果我在 MASTER 中更新条目 ID 5 的名称,则会在所有子数据库上运行相同的查询(它们将在相同的 ID 下保存相同的条目,但有一些额外的列)。

最佳答案

您可以使用 CakePHP 的模型触发器(beforeSave、afterSave...)轻松做到这一点,但保持所有这些东西同步很快就会成为您最糟糕的噩梦。相反,我会做这样的事情:

  • Master.User 有(id, name, password, specData1, specData2...)
  • Child1.User 是一个 mysql View :CREATE VIEW User AS SELECT id AS id,name AS name..,specData1 AS specData FROM Master.User

是的,您可以创建跨数据库 View 。对于 CMSs Child1.User 是一个表,所有 CREATE/DELETE/UPDATE 操作都是由 CMS 在 VIEW 上透明地完成的,认为它是一个表。 (但 Master.User 得到更新)

关于php - (Cake)PHP - 使用来自主数据库的数据更新子数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22462109/

相关文章:

php - 多个左连接与总和

php - 如何显示与正则表达式不匹配的字符列表?

mysql - 按 id 问题自定义模板顺序

sql - 有一个带有 pcode 的表,在不同的行中有许多日期。如何只选择密码的最新日期

mysql - MYSQL数据库中的杂字符?

php - 将上传的图像名称存入数据库

mysql - 找出昨天和今天之间出勤率下降最大的 SQL

php - 在 Magento 中创建 Product 时违反完整性约束

PHP在EOT中插入变量

php - SQL语法接近,没有正确使用