2014-03-29 77 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

謝謝。這工作完美。 –