【问题标题】:Foreign Key in 2 tables (CakePHP)2 个表中的外键 (CakePHP)
【发布时间】:2014-03-30 12:04:41
【问题描述】:

我有 3 个表:staff、users 和 threads。

员工和用户都可以创建线程,线程属于用户。

在线程中,有一个 user_id (FK - BelongsTo)。问题是,我如何确定谁创建了线程。如果我创建了一个名为 creator_id 的字段,我仍然不知道创建线程的是员工还是用户。

我还尝试了一种不同的方法,创建了一个名为 creator (enum('staff', 'user)) 的字段。这种方法的局限性在于,当我使用 Thread->find() 时,我无法找到检索创建者信息的方法。

为了实现我想要的,我有哪些选择?

【问题讨论】:

  • 员工和用户都是可以登录应用程序的最终用户吗?如果是这样,您为什么要以这种方式拆分它们,而不是为用户创建单个模型并添加一个字段来指示他们的“角色”?
  • 是的。因为客户端需要将用户保存在另一个表中。所以在这种情况下不能使用角色。

标签: php cakephp


【解决方案1】:

在 Model for Thread 中按照以下方式进行模型关联。创建一个名为 creator_id 的字段并存储创建线程的用户/员工的 id,

public $belongsTo = array(
    'Client' => array(
        'className' => 'Staff',
        'foreignKey' => 'creator_id',
        'conditions' => array('Thread.creator' => 'staff'),
        'fields' => '',
        'order' => ''
    ),
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'creator_id',
        'conditions' => array('Thread.creator' => 'user'),
        'fields' => '',
        'order' => ''
    )
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多