更新於 2022/04/25閱讀時間約 1 分鐘

Laravel Eloquent: 多對多查詢

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

資料情境:


程式碼:

  • 在Model中使用belongsToMany建立多對多關係,employee_department則為中間關聯表的table name。
  • withPivot: 可指定中間關聯表的資料要加上哪些欄位,如果沒加這個,預設只會出現關聯表的id(employee_id, department_id)。

設定完Model關聯關係後,可以快速取得某位員工的部門資料:
Employee::find(1)->departments
反之,Department也可以透過employees取得某個部門的員工資料。

列出所有員工,帶上對應的部門資料:
Employee::with('departments')->get()

完整程式碼:

結果:

  • pivot中儲存的是中間關聯表的欄位。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.