php - Cakephp 在登录基础上选择数据库

标签 php mysql database cakephp

我想知道是否有办法做一个多数据库系统

例如,我有许多客户端注册到我的系统,我希望在登录时选择其数据库,因为我想将每个客户端划分为一个自己的数据库。它是否正确?因为我想把每个客户的信息分开。 好吧,我认为我必须在 cakephp 的数据库文件中进行多重配置,但我不知道这样做的热度: 当客户端创建 lgin (使用默认数据库)时,当他们登录时,我想在包含其数据库名称的表中获取一个变量,然后将其设为事件数据库。

这可能吗? 我无法为每个客户端声明数据库配置。

有人可以帮我吗?

谢谢

这是我在database.php中实际的默认数据库

public $default = array (
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'login',
        'password' => 'password_',
        'database' => 'default_db',
        'prefix' => ''
    );

我想分离数据库,因为我想创建一些页面,每个客户都可以在其中编辑某些表的字段,因为例如:如果他们想添加到表项目字段 notes,他们可以,另一位客户不希望提交此文件,但还有许多其他客户。我想创建一个系统来编辑某些表格。
为此有两种解决方案:

- 登录时在登录时使用单独的数据库
- 每次用户注册时使用唯一的数据库广告我会自动创建其表,例如没有表 project 而是 project_{user_id} 例如,每个用户都可以拥有它的表。

哪种方法更好?

谢谢

最佳答案

I want to divide every client with an own database. Is this correct? I think it's not a good idea to realize this task using CakePHP, but it is possible, take a look to CakePHP DataSources. In simple way your solution should be like this:

  1. 设置主数据库,包含一些应用程序指定的数据。
  2. 使用 MySQL 内置技术授权用户。
  3. 使用另一个具有授权用户访问数据的数据源。

您必须注意授予权限。

Which method is better?

这取决于用户数量。如果是两个或三个,你的方法没有什么区别。但如果是 100 或 1000,那么管理你的 table 就会很困难。请记住奥克曼的话:如无必要,不得增加实体。使用MySQL方式,数据库必须存储表,用户可以访问数据库。不要违反这条规则。

另外看看 PHPMyAdmin,也许根据您的需要更改它会更好,它是在 GNU GPL2 许可证下获得许可的。

关于php - Cakephp 在登录基础上选择数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068566/

相关文章:

php在终端执行时无法连接到数据库

php - 在 PHP 中释放内存

php - PHP无法连接到MongoDB套接字

c# - Entity Framework Core 生成具有不明确列名的 SQL

MySQL数据库保留历史变化(就像wiki一样)

php - 从 wordpress 访问和显示 wordpress 帖子

php - csv 未使用 laravel 上传到数据库

mysql - 搜索多个百分号

database - 是否可以让 postgres 自动更新听觉表的列定义?

c - 取消引用指向不完整类型的指针 - typedef struct