0

I am new to Livewire, I am implementing data table using livewire. Requirement: I need to sort data by updated_at column in descending order. After that if user click on status , then status should be sort by Ascending then also sort by updated_at. here is my code :

 <?php

namespace App\Http\Livewire\Table;

use App\Models\RequestLog;
use App\Models\User;
use Illuminate\Support\Facades\DB;
use Mediconesystems\LivewireDatatables\BooleanColumn;
use Mediconesystems\LivewireDatatables\NumberColumn;
use Mediconesystems\LivewireDatatables\Column;
use Mediconesystems\LivewireDatatables\DateColumn;
use Mediconesystems\LivewireDatatables\Http\Livewire\LivewireDatatable;

class AdminMatch extends LivewireDatatable
{
    // public $exportable = true;
    public $hideable = 'buttons';
    // public $model = User::class;
  /**
   * Write code on Method
   *
   * @return response()
   */
    public $filter;
    
    public function builder()
    {
        $matchReq= RequestLog::orderBy('request_logs.updated_at', 'desc')
        ->Join('users', 'users.id', 'request_logs.user_id');
        return $matchReq;
    }
  public function columns()
  {
      return [
        
          NumberColumn::name('id')
              ->label('ID')
              ->searchable()
              ->defaultSort('desc'),
              NumberColumn::name('users.profile_code')
              ->label('Sender Profile Code')
              ->searchable()
              ->defaultSort('desc'),
              
              NumberColumn::name('request_logs.receiver_profile_code')
              ->label('Receiver Profile Code')
              ->searchable()
              ->defaultSort('desc'),

              DateColumn::name('request_logs.created_at')
              ->label('Request Sent')
              ->format('d/m/Y')
              ->defaultSort('desc'),

              DateColumn::name('request_logs.updated_at')
              ->label('Request Updated')
              ->format('d/m/Y')
              ->defaultSort('desc'),

              Column::callback(['status'], function($status){
                if ($status == 'Unsuccessfull') {
                  return "<span class='badge' style='color: white; background-color: red !important'>$status</span>";
                }elseif ($status == 'accept') {
                  return "<span class='badge' style='color: white; background-color: green !important'>$status</span>";
                }elseif ($status == 'new') {
                  return "<span class='badge badge-info'>$status</span>";
                }elseif ($status == 'in-process') {
                  return "<span class='badge' style='color: white; background-color: orange !important'>$status</span>";
                }
                  // return "<span class='badge' style='color: white; background-color:  !important'>$status</span>";
              })->label('Status'),

            Column::callback(['status','id'], function($status, $id){
              // if($status == 'new'){
                return "<a class='btn btn-success' href='/superadmin/match-request-view/$id'>View</a>";
              // }
            })->label('Action'),
      ];
  }
}

enter image description here

you can see in picture when i click on status table nothing happend.

Usama Riaz
  • 21
  • 2

0 Answers0