2017-10-04 57 views
0

我的情況與此相同:Sort data (order by) before group by in mysql如何在laravel之前通過組前排序?

我嘗試所有的答案那裏,我找到@Justin

答案最佳答案在MySQL這樣的:

SELECT t1.* 
FROM prd_data t1 
WHERE t1.id = (SELECT t2.id 
       FROM prd_data t2 
       WHERE t2.sub_prd_id= t1.sub_prd_id 
       ORDER BY t2.created_at DESC 
       LIMIT 1) 

我曾嘗試sql查詢和它的工作

但如何將sql查詢轉換爲laravel雄辯?

我發現很難在laravel雄辯中轉換sql查詢。因爲查詢非常複雜

我該如何解決這個問題?

+0

爲什麼你將其轉換爲雄辯?你可以簡單地創建一個MySQL視圖,並用雄辯的模型來處理這個視圖。隱藏查詢的複雜性。如果你真誠地將其重寫成雄辯,沒有什麼可以獲得的。 – Mjh

+0

@Mjh,你是什麼意思?嘗試用代碼回答。讓我輕鬆理解你的觀點 –

+0

我認爲你對MySQL很熟悉,並且是一種觀點。如果他們不瞭解基本概念,我將不會提供複製粘貼代碼供人使用。我認爲這不是生產力或值得付出的努力。我建議你四處看看看看是什麼,然後你很可能會得到我想要建議的。 – Mjh

回答

1

您可以簡單地使用DB ::選擇(),如果你想使用SQL查詢

DB::select("SELECT t1.* FROM prd_data t1 WHERE t1.id = (SELECT t2.id 
      FROM prd_data t2 
      WHERE t2.sub_prd_id= t1.sub_prd_id 
      ORDER BY t2.created_at DESC 
      LIMIT 1)"); 
0
$whereClause = DB::table(‘prd_data’)->where(t2.sub_prd_id, t1.sub_prd_id)->orderBy(’t2.created_at’,’desc’)->take(1)->get(); 

$result = DB::table(‘prd_data')->where(t1.id,$whereCond.id)->get(); 

希望工程:)

+0

看來這將是一個錯誤。因爲它會首先運行'$ whereClause'。在'$ whereClause'裏面,'t1.sub_prd_id'沒有值。我還沒有嘗試過。但這似乎是一個錯誤 –

相關問題