2016-08-23 34 views
0

顯示數據時,我有三個表,「會議」,「類」和「時間表」他們彼此相連,什麼是最好的做法。從多個表

會議:ID,姓名,DESCR

類:身份證,SESSION_ID,名

時間表:類標識碼,SESSION_ID,日期

類屬於一個會話,而時間表是一種N:M關係,它給出了在一個班級中每個會話都有特定日期的機會。

我的問題是當我有顯示這些信息,我有顯示所有會話的功能:

$sessions = Session::all(); 

,我有這顯示特定類的日期,下面一個特定的會話另一個函數:

$result = Schedule:where('class_id','=',$classId)->where('session_id','=',$essionId)->first(); 

所以我們說,我有一個類30屆,當談到這是寫在AngularJS我不知道如何處理我的前端應用程序中使用的NG-重複迭代直通這裏顯示所有的會議,然後再打一個電話ng-repeat迭代調用計劃來顯示會話的日期,這在AngularJS中我不是很好的做法。

任何人都可以告訴我什麼是我處理這個問題的最佳選擇?我必須修改後端嗎?像編輯Session:all();查詢還包括計劃表?或者什麼是最好的方法?

回答

0
  1. 我以爲你已經配置在車型的關係,如果不看here

  2. 至於我,我用Fractal自定義顯示的數據。也有叫Available includes 所以,你可以要求你的數據,如/sessions/?include=classes,讓輸出方便的方法

{data: [{ session_id: 1, some: "data", classes:[{ class_id: 11, some: "class_data" }] }]}

0

我會「貪婪加載」數據,這樣你就可以通過訪問該對象的所有父母你加載的對象。這樣,您可以通過迭代1個對象來逐個填充表格行。

excellent documentation關於在Laravel網站預先加載,所以我建議你從那裏開始

+0

我已經這樣做了:公共職能的時間表(){ 回報 $這個 - > belongsToMany(「應用程序\時間表」 ,'schedule','session_id','id'); } and in ctrl我有這個:$ sessions = Session :: with('schedule') - > get();但我得到一個錯誤語法錯誤或訪問衝突:1066不唯一的表/別名:'日程安排'(SQL:選擇'日程安排'。*,'日程安排'.'session_id'爲'pivot_session_id','日程安排'.''id ''''從'日程安排'中將'pivot_id'作爲'schedule'內部連接'日程安排'''''''''日程安排''''''在其中執行'日程安排'。(1,2,3,4,5,6,7,8,9,10)中的'session_id') – artan