2014-03-29 36 views
1

我有3个表格:员工,用户和线程。两张表中的外键(CakePHP)

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

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

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

我有什么选择来实现我想要的?

+1

工作人员和用户都可以登录到应用程序的最终用户?如果是这样,你为什么要以这种方式拆分它们,而不是创建一个单一的用户模型并添加一个字段来表示他们的“角色”? – jackel414

+0

是的。因为客户端需要将用户保留在另一个表中。所以在这种情况下不能使用角色。 –

回答

2

在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' => '' 
    ) 
); 
+0

谢谢。这工作完美。 –