From f58fc6fb77a9fe5abce1803e221b7aefae03bd7c Mon Sep 17 00:00:00 2001 From: root Date: Sat, 30 May 2026 22:20:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(controller):=20resolve=20F-01=20=E2=80=94?= =?UTF-8?q?=20HomeController=20now=20matches=20MapController=20dashboard?= =?UTF-8?q?=20data=20query?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/Http/Controllers/HomeController.php | 34 ++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/app/Http/Controllers/HomeController.php b/src/app/Http/Controllers/HomeController.php index 861545d9..19ac3ae5 100644 --- a/src/app/Http/Controllers/HomeController.php +++ b/src/app/Http/Controllers/HomeController.php @@ -8,11 +8,37 @@ class HomeController extends Controller { public function index() { - $stations = DB::table('station') - ->select('stationid', 'name', 'district', 'lat', 'lng', 'rainfall', 'waterlevel', 'siren') - ->orderBy('stationid') + $data = DB::table('station as s') + ->leftJoin('rainfall as r', function($join) { + $join->on('r.stationid', '=', 's.stationid') + ->whereRaw('r.timestamp = (SELECT MAX(timestamp) FROM rainfall WHERE stationid = s.stationid)'); + }) + ->leftJoin('waterlevel as w', function($join) { + $join->on('w.stationid', '=', 's.stationid') + ->whereRaw('w.datetime = (SELECT MAX(datetime) FROM waterlevel WHERE stationid = s.stationid)'); + }) + ->leftJoin('siren as sir', function($join) { + $join->on('sir.stationid', '=', 's.stationid') + ->whereRaw('sir.active_time = (SELECT MAX(active_time) FROM siren WHERE stationid = s.stationid)'); + }) + ->whereNotNull('s.lat') + ->whereNotNull('s.lng') + ->where(function($query) { + $query->whereNotNull('r.hourly') + ->orWhereNotNull('w.waterlevel'); + }) + ->select( + 's.*', + 'r.hourly as rainfall_value', + 'r.timestamp as rainfall_time', + 'w.waterlevel as waterlevel_value', + 'w.datetime as waterlevel_time', + 'sir.level as siren_level', + 'sir.active_time as siren_time' + ) + ->orderBy('s.stationid', 'asc') ->get(); - return view('layout.dashboard', compact('stations')); + return view('layout.dashboard', compact('data')); } } \ No newline at end of file