php - PHP中如何处理不同的账户类型?

标签 php mysql model schema

我有 3 个表/模型,其关系如下图所示:

    Account
       |
   ----------
   |        |
 User     Company

它们都由帐户的主键连接,并且用户和公司各自具有非常不同的方法和字段集。

假设我只知道“帐户ID”,并且我需要加载一个帐户,我假设以下是一个好的程序?

  1. 帐户模型通过 ID 加载
  2. 然后确定“帐户类型”
  3. 用户或公司对象被加载到帐户对象本身中。它可以像这样使用:

    $account->company->company_name();

不知何故,这似乎不是很有效......有人可以提出更好的建议吗?

最佳答案

可能最好让用户和公司都扩展帐户,并且父类帐户不知道子类(只有子类应该知道父类),因此当您需要添加更多帐户子类时,您不需要不需要更改帐户中的任何内容:

    class Account {
        var $email;
        var $password;

        function load() {
            // load from db
        }
    }

    class User extends Account {
        var $first_name;
        var $last_name;

        function load() {
            parent::load();
            // load for this class
        }
    }

    class Company extends Account {
        var $company_name;

        function load() {
            parent::load();
            // load for this class
        }
    }

关于php - PHP中如何处理不同的账户类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7521737/

相关文章:

php - Ubuntu 21.04 是否与 PHP sqlsrv 驱动程序兼容?

php - 类(class)完成时更新外部数据库

python - sqlalchemy 连接到 VPS 数据库

mysql - 将 TSV 文件从存储桶移动到 Cloud MySql

javascript - Backbone 良好的模型结构

php - 计算数据库中存在的相同项目的总数

php - 通知 : Undefined offset: 0

php - PDO 和 SSH2 隧道

python-2.7 - SQLAlchemy 辅助连接模型在奇怪的情况下失败

c# - 如何使用 IEnumerable<T> 计算模型中的项目数