2个表中的外键(CakePHP)

时间:2014-03-29 19:36:11

标签: php cakephp

我有3个表:员工,用户和线程。

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

在线程中,有一个user_id(FK - BelongsTo)。问题是,我如何识别谁创建了该线程。如果我创建一个名为creator_id的字段,我仍然不知道如果它是创建该主题的人员或用户。

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

我有什么选择可以实现我的目标?

1 个答案:

答案 0 :(得分:2)

在Model for Thread中将Model Association作为以下内容。创建一个名为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' => ''
    )
);