1
我正面臨着如何在laravel中設置我的表/關係的問題。複雜的Laravel關係
說明: 用戶可以有3種類型(承租人,經理,管理員)。管理員是最簡單的類型,它沒有額外的屬性。租戶和經理擁有與每種類型相關的額外財產。此外,租戶與單位之間存在1-1的關係(假設現在每個單位有1個用戶帳戶),並且經理與屬性之間存在N-N關係(多個經理可以管理1個房產,1個經理可以管理多個房產)。
我想出什麼了到目前爲止:
方法1
如何我的模型關係將成立:
User.php
public function subaccount()
{
return $this->morphTo('subaccount');
}
Manager.php
和Tenant.php
public function user()
{
return $this->morphOne(User::class, 'subaccount');
}
優點:
- 沒有hacky的代碼。
缺點:
- 廣東話建立外鍵約束,subaccount_id可以爲空,如果 用戶是管理員
- 我覺得用戶應該不屬於租戶/經理,這 關係應該是其他方式
方法2
如何我的模型關係將成立:
Manager.php
和Tenant.php
這些都很好
public function user()
{
return $this->belongsTo(User::class);
}
User.php
需要像這樣
public function subaccount()
{
if ($this->type === 'tenant') {
$resource = Tenant::class;
} else if ($this->type === 'manager') {
$resource = Manager::class;
}
return $this->hasOne($resource);
}
個
優點:
- 可以設置外鍵約束,沒有subaccount_id
缺點:
- 我彷彿置身於用戶是 「動態」 的關係很奇怪和 感覺哈克。
很想得到不同的觀點或想法,我可以建立此任何其他方式。
模型用戶 - >租賃 - >單元和用戶 - >管理 - >屬性,其中租賃和管理是樞紐? – Jason