2016-08-23 33 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