2017-10-04 5 views
0

私の場合はこれと同じである:Sort data (order by) before group by in mysqllaravelでグループ化する前にどのように注文することができますか?

私はそこにすべての答えを試してみて、私はこのようなMySQLで@Justin

答えから最良の答えを見つける:

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クエリとそれは動作します

しかし、どのようにlaravel雄弁にSQLクエリを変換?

laravel eloquentで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'は値を持ちません。私はまだそれを試していない。しかし、それはエラーのようです –

関連する問題