我試圖用一箇中介表來表示下列要求兩個不同的用戶表(員工&非僱員)之間的關係,贊助關係多態:與多個關聯
- 申辦者可或者是員工或非員工。
- 員工/非員工只能屬於一個贊助商。
- 員工可以有很多贊助商。
我注意到Laravel的多態關係只支持單關聯。通常他們在關係中使用中間表來防止創建具有相同簽名的多個表。就我而言,我需要多元化雙方的關係,因爲在任何時候我都可以讓贊助商/贊助人屬於任何一個表。我不知道我是否正在討論這個問題,目前有點困難。
這是我目前有:
Employees
id
sponsor_id
NonEmployees
id
sponsor_id
Sponsors
id
sponsorable_id
sponsorable_type
接下來,我設置了以下型號:
型號/ Employee.php
public function sponsors() {
return $this->morphMany('Sponsor', 'sponsorable');
}
型號/ NonEmployee.php
public function sponsors() {
return $this->morphMany('Sponsor', 'sponsorable');
}
模型/贊助商。 php
public function sponsorable() {
return $this->morphTo();
}
通過此設置,我能夠對贊助商表執行常規查詢查詢,然後對其進行反向工程,以檢索贊助商的名稱。
Sponsor::with('sponsorable')->get();
Sponsor::find(1)->sponsorable;
您所描述的「贊助商」之間的關係是什麼,「僱員」看起來像一棵'樹'結構。那是對的嗎?即一名員工既可以是「贊助者」,也可以是另一名員工的「贊助者」? –
是的,這是正確的。 「非員工」也是如此。對於這個特定的問題,它們之間幾乎沒有什麼區別,只是它們處於不同模式的不同表格中。有什麼想法嗎? – Jeremy
你是否有邏輯來執行你的規則?我正在考慮'關係中的'週期'。更多爲「定向圖」。如果發生「週期」,處理過程會發生什麼? –