laravelでhasManyやhasOneで、リレーション先のレコードがあるかどうかで検索したい!
laravelでhasManyやhasOneで、リレーション先のレコードがあるかどうかで検索したい! 参考URL https://r17n.page/2020/02/15/laravel-query-with-relat 続きを読む laravelでhasManyやhasOneで、リレーション先のレコードがあるかどうかで検索したい!
本とか料理とかコンピュータとか
laravelでhasManyやhasOneで、リレーション先のレコードがあるかどうかで検索したい! 参考URL https://r17n.page/2020/02/15/laravel-query-with-relat 続きを読む laravelでhasManyやhasOneで、リレーション先のレコードがあるかどうかで検索したい!
laravel8で、何十万件もあるレコードをCSVファイルとしてダウンロード出来るようにしてみた。 $query->cursor()を使って1レコードずつ処理して、ストリームに流し込む(サーバ側でCSVファイルは作らない 続きを読む laravel8で、何十万件もあるレコードをCSVファイルとしてダウンロード出来るようにしてみた。$query->cursor()を使って1レコードずつ処理して、ストリームに流し込む(サーバ側でCSVファイルは作らない)
laravelのhasmanyで、年月日でgroup byして、その日の最新のレコードだけ欲しい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// このビルの更新情報(フロアの更新情報も含ませる) public function history_logs() { // return $this->hasMany(BuildingFloorHistoryLog::class, 'b_code', 'b_code')->orderBy('updated_at','desc'); return $this->hasMany(BuildingFloorHistoryLog::class, 'b_code', 'b_code') ->groupBy('f_code', DB::raw('DATE(check_date)'), 'history_message_kind') // 日時別・種類別 ->select( // group byされていないカラムは、maxにしておけば最新の日付になる。メッセージは同じなのでmaxでも問題なし DB::raw('max(id) as id'), DB::raw('max(b_code) as b_code'), DB::raw('max(f_code) as f_code'), DB::raw('max(history_message) as history_message'), DB::raw('max(check_date) as check_date'), DB::raw('max(created_at) as created_at'), DB::raw('max(updated_at) as updated_at') ) ->orderBy('check_date','desc'); } |
こういうややこしいのは、SQL文の方が楽だな~。 [c 続きを読む laravelのhasmanyで、年月日でgroup byして、その日の最新のレコードだけ欲しい。
リレーション先カラムで検索する時にWhereHasだと遅いので、joinで結合したらpaginateがおかしくなったので、親テーブルの主キーでgroupbyする [crayon-6721d50be12ec37076097 続きを読む リレーション先カラムで検索する時にWhereHasだと遅いので、joinで結合したらpaginateがおかしくなったので、親テーブルの主キーでgroupbyする