从多个表中显示数据时的最佳做法是什么

时间:2016-08-23 13:47:31

标签: javascript angularjs laravel

我有三张桌子,会话&#39;,&#39;类&#39; 和&#39; 时间表< /强>&#39;它们相互联系。

  

会话:id,name,descr

     

类:id,session_id,name

     

日程安排:class_id,session_id,date

一个类属于一个会话,而一个类是一个N:M关系,它给出了在一个类中每个会话都有特定日期的机会。

当我必须显示这些信息时,我的问题出现了,我有一个显示所有会话的功能:

$sessions = Session::all();

我还有另一个功能,它显示特定类的日期和特定会话,如下所示:

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

所以说我的单个课程有30个课程,当谈到我用AngularJS编写的前端应用程序时,我不知道如何使用ng-repeat迭代遍历所有会话来处理显示,然后制作另一个带有ng-repeat迭代的调用来调用调度来显示会话的日期,这在AngularJS中是不行的。

有谁能告诉我什么是我处理这个问题的最佳选择?我要修改后端吗?喜欢编辑Session:all();查询还包括Schedule表?或者最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

  1. 我认为你已经在模型中配置了你的关系,如果看不到here

  2. 就我而言,我使用Fractal来自定义显示数据。还有一种称为Available includes的方便方法 因此,您可以请求/sessions/?include=classes等数据并获取输出

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

答案 1 :(得分:0)

我会急切地加载&#34;数据,因此您可以通过加载的对象访问所有对象的父级。这样,只需迭代1个对象就可以逐个填充表行。

在Laravel网站上有关于急切加载的excellent documentation,所以我建议你从那里开始