2014-11-04 74 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