2014-11-04 78 views
0

我目前正在开发一个项目,我需要使用MySQL对一个集合进行排序,但是我实际上无法实现这个工作。我有一个组件表。组件属于培训。所以培训可以有多个组件。在多个值上排序MYSQL Laravel

我做了一个HTML表格的结果,有以下栏目:

  • 日期
  • 时间
  • Training_id
  • 组件

我想要什么,是排序组件通过: - 日期,所有日期应排序ASC - 时间,组件最早的时间需要排在最前面 - 基于时间的组件,组件需要通过相同的培训进行分组。

例如,具有这些组件的列表:

日期:2014年4月11日
时间:11:00
Training_id:1个
组件:第一部件

日期:4 -11-2014
时间:11:30
Training_id:2
组件:training_id的第一组件2

日期:2014年4月11日
时间:12:00
Training_id:1个
组件:第二组分

需要放置的顺序:第一组分,第二组分,第一组分training_id 2.这是因为基于时间的第一个组件是'第一个组件'。下一步是,此培训的所有组件都将按“第一个组件”(也是基于时间)进行排序。之后接下来的训练就来了。

有没有人有一个线索,我真的想不通这一个..

这是ORDER_BY功能我到目前为止:

$result = Components::ofType('Training') 
     ->select('components.*') 
     ->join('trainings', 'trainings.id', '=', 'components.parent_id') 
     ->groupBy('components.id') 
     ->orderBy('component_start_date') 
     ->orderBy('parent_id') 
     ->orderBy('from') 
     ->get(); 
+0

我更新了我的问题 – user1393817 2014-11-05 08:01:08

回答

0

它可以为你 $数据工作 - >排序依据( “日期”, “ASC”) - >排序依据( “时间”, “ASC”)

+0

谢谢,我错过这里的唯一的事情就是componen相同训练的训练将显示在对方下方。 – user1393817 2014-11-05 08:04:10

0
$training = DB::table('training') 
         ->leftJoin("component", "component.training_id", "=", "training.id") 
         ->groupBy("trainig.id") 
         ->orderBy("component.Date", "asc")->get(); 
+0

谢谢,但这只会在日期排序,我不得不排序组件,父母和时间的日期。 – user1393817 2014-11-05 08:04:58