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'),
];
}
}
you can see in picture when i click on status table nothing happend.