我怎样才能在 laravel 中的分组依据之前进行排序?

How can I make order by before group by in laravel?

我的情况与此相同:Sort data (order by) before group by in mysql

我尝试了那里的所有答案,并从@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 eloquent?

我发现很难在 laravel eloquent 中转换 sql 查询。因为查询很复杂

我该如何解决这个问题?

$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();

希望它有用:)

如果你想使用sql查询,你可以简单地使用DB::select()

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)");