Laravel5.4で、以下のコードで出力した結果をviewで一覧しようとしていますが、
グルーピングすると、orderbyでdescでソートした最初のレコードが表示されません。
どのようにすれば、descソートの最初の行が表示されるでしょうか?
$contents = DB::table('contents')->select()->join('contents_detail','contents_detail.ctnts_code',"=","contents.ctnts_code") ->orderby('contents.ctnts_code','asc')->orderby('cnts_detl_code','desc')->groupby('contents_detail.ctnts_code')->Paginate(15);
groupbyの記述だけ削除した場合(つまりorderbyだけかけた場合)、正しい件数が表示されますか?
また、逆にorderbyだけ削除した場合も、想定通りの結果になりますか?
想定通りの出力になります。
$contentsをどのように表示していますか?$contentsをjson_encodeした場合でも、最初のレコードが含まれていない状態ですか?
MYSQLで直接SQLを実行しても同様の型式で出力されるので、json型式などは関係ないようです。$contentsは、blade型式で <td>{{$val->ctnts_code}}</td> の項目で出力しています。
想定する結果と、実際の結果を比較で記載していただけますか?
色々とありがとうございます。aro10さんのご指摘通り、まずは想定出力可能なSQLを調査してみます。想定結果は、contentsIDが昇順に、それに紐づくcontents_detailIDが降順に並んだデータを、contentsIDでグルーピングした結果、各contentsIDに紐づくcontents_detailIDが一番大きいものを表示させるという形になります。

回答1件
あなたの回答
tips
プレビュー