假設資料情境是「每位員工可能屬於多個部門,每個部門可能包含多位員工」,這種多對多的關係。
資料情境:



程式碼:


- 在Model中使用belongsToMany建立多對多關係,employee_department則為中間關聯表的table name。
- withPivot: 可指定中間關聯表的資料要加上哪些欄位,如果沒加這個,預設只會出現關聯表的id(employee_id, department_id)。
設定完Model關聯關係後,可以快速取得某位員工的部門資料:
Employee::find(1)->departments
反之,Department也可以透過employees取得某個部門的員工資料。列出所有員工,帶上對應的部門資料:
Employee::with('departments')->get()
完整程式碼:

結果:


- pivot中儲存的是中間關聯表的欄位。
本筆記參考:
1. https://learnku.com/laravel/t/7523/ask-how-do-laravel-multiple-queries-come-true
2. https://docs.laravel-dojo.com/laravel/5.5/eloquent-relationships