Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

tomasosho's avatar

I want to select dates and group by name, then count number of present in monthly.

MY DB

CREATE TABLE attendance (
    id         INTEGER  NOT NULL
                        PRIMARY KEY AUTOINCREMENT,
    date       DATE,
    name       VARCHAR,
    department VARCHAR,
    present    VARCHAR,
    absent     VARCHAR,
    created_at DATETIME,
    updated_at DATETIME,
    staff_id   VARCHAR
);

I am making use of datatables

My controller without grouping just table selected

public function indexat()
    {
        return view('attendance');
    }
    public function attendanceList()
    {   
        $attendanceQuery = Attendance::query();
 
        $start_date = (!empty($_GET["start_date"])) ? ($_GET["start_date"]) : ('');
        $end_date = (!empty($_GET["end_date"])) ? ($_GET["end_date"]) : ('');
 
        if($start_date && $end_date){
 
         $start_date = date('Y-m-d', strtotime($start_date));
         $end_date = date('Y-m-d', strtotime($end_date));
 
         $attendanceQuery->whereRaw("date(attendance.date) >= '" . $start_date . "' AND date(attendance.date) <= '" . $end_date . "'");
        }
        $attendance = $attendanceQuery->select('*');
        return datatables()->of($attendance)
            ->make(true);
    }

I want to group data by name and also count the number of presents in a month.

My view

<div class="row">
   <div class="form-group col-md-6">
    <h5>Start Date <span class="text-danger"></span></h5>
    <div class="controls">
        <input type="date" name="start_date" id="start_date" class="form-control datepicker-autoclose" placeholder="Please select start date"> <div class="help-block"></div></div>
    </div>
    <div class="form-group col-md-6">
    <h5>End Date <span class="text-danger"></span></h5>
    <div class="controls">
        <input type="date" name="end_date" id="end_date" class="form-control datepicker-autoclose" placeholder="Please select end date"> <div class="help-block"></div></div>
    </div>
    <div class="text-left" style="
    margin-left: 15px;
    ">
    <button type="text" id="btnFiterSubmitSearch" class="btn btn-info">Submit</button>
    </div>
    </div>
    <br>
    <table class="table table-bordered" id="laravel_datatable">
       <thead>
          <tr>
             <th>Date</th>
             <th>Name</th>
             <th>Department</th>
             <th>Present</th>
             <th>Overtime</th>
          </tr>
       </thead>
    </table>
 </div>
 <script>
function myFunction() {
  window.print();
}
</script>
 <script>
 $(document).ready( function () {
     $.ajaxSetup({
          headers: {
              'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
      });
  $('#laravel_datatable').DataTable({
         processing: true,
         serverSide: true,
         ajax: {
          url: "{{ url('attendance-list') }}",
          type: 'GET',
          data: function (d) {
          d.start_date = $('#start_date').val();
          d.end_date = $('#end_date').val();
          }
         },
         columns: [
                  { data: 'date', name: 'date' },
                  { data: 'name', name: 'name' },
                  { data: 'department', name: 'department' },
                  { data: 'present', name: 'present' },
                  { data: 'absent', name: 'absent' },
               ]
      });
   });
 
  $('#btnFiterSubmitSearch').click(function(){
     $('#laravel_datatable').DataTable().draw(true);
  });
</script>

Thanks!

0 likes
1 reply
tomasosho's avatar
tomasosho
OP
Best Answer
Level 4

how can i count in this type of views using data table?

<table class="table table-bordered" id="laravel_datatable">
       <thead>
          <tr>
             <th>Date</th>
             <th>Name</th>
             <th>Department</th>
             <th>Present</th>
             <th>Overtime</th>
             <th>Count</th>
          </tr>
       </thead>
    </table>
 </div>
 <script>
function myFunction() {
  window.print();
}
</script>
 <script>
 $(document).ready( function () {
     $.ajaxSetup({
          headers: {
              'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
      });
  $('#laravel_datatable').DataTable({
         processing: true,
         serverSide: true,
         ajax: {
          url: "{{ url('attendance-list') }}",
          type: 'GET',
          data: function (d) {
          d.start_date = $('#start_date').val();
          d.end_date = $('#end_date').val();
          }
         },
         columns: [
                  { data: 'date', name: 'date' },
                  { data: 'name', name: 'name' },
                  { data: 'department', name: 'department' },
                  { data: 'present', name: 'present' },
                  { data: 'absent', name: 'absent' },
                  { data: 'absent', name: 'absent' },
               ]
      });
   });
 
  $('#btnFiterSubmitSearch').click(function(){
     $('#laravel_datatable').DataTable().draw(true);
  });
</script>

Please or to participate in this conversation.