0
我最近完成了我的第一個Laravel項目(我非常喜歡這個框架的外觀,並試圖嘗試一下),並反思了我認爲我做得很好,我做得不好,以及接下來我想做什麼改變時間。Schema.org + Laravel =方式太複雜?
我注意到的一個最大的問題是,爲了避免重複數據,爲了從數據庫中提取有意義的信息,我做了一些相當可怕的工作。
在項目開始時,我使用schema.org作爲設計模型的粗略基礎。舉例來說,當我想存儲Employee
S和Customer
S:
- 創建
Person
模型 - 一個
Person
的hasManyRole
小號 - 一個
Customer
是(變種)Role
- 的
Employee
是(morphs)Role
- 一種
Organization
的hasManyEmployee
小號 - 的
Organization
的hasManyCustomer
小號
起初,這似乎是不錯的,因爲一個人可以既僱員和客戶(你可以在沃爾瑪工作店沃爾瑪)。同樣,由於一個人可以有多個角色,他們可以是多個客戶和多個員工 - 如果他們在多個商店購物或者他們有兩個工作。
但是我遇到了問題時,我想要做的東西,如「找到組織X的名字全體員工是約翰」:
$employees = $organization->employees;
$employeesNamedJohn = new Collection();
foreach($employees as $employee) {
if($employee->role->person->name == 'John')
$employeesNamedJohn->add($employee);
}
這似乎非常複雜的(更不用提效率低),特別是考慮到如果我沒有發明了搞砸模式這純粹是一個班輪:
$employees = $organization->employees()->where('name', 'John')->get();
所以我只是做錯了什麼? Laravel是否有一種簡單的方法來處理這種複雜的關係,或者答案就是永遠不會讓你的關係變得複雜?