Используйте оператор стрелки (только для MySQL):
$reports = DB::table('attendance_report_details')
->select('*', DB::raw("project_hours->'$[".(int) $index_id."]'"))
->get();
Или его псевдоним JSON_EXTRACT()
(MySQL & MariaDB):
$reports = DB::table('attendance_report_details')
->select('*', DB::raw("json_extract(project_hours, '$[".(int) $index_id."]')"))
->get();