やりたいこと
- Kyslik/column-sortableを使う
- 複数カラム(日付、時刻)を指定してソート
前提
やった
こんな感じでオリジナルのソートメソッド作れるからそれでやる。
Model
カスタムソートメソッドを追加
Reservation.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Kyslik\ColumnSortable\Sortable;
class Reservation extends Model
{
use Sortable;
public $sortable = ['id', 'reserve_date', 'time_from'];
/**
* 日付と時刻でorderByするメソッドを追加
* xxxSortableの形にする
*/
public function reserveDateTimeSortable($query, $direction)
{
// ORDER BY reserve_date ASC/DESC, time_from ASC/DESC
return $query->orderBy('reserve_date', $direction)->orderBy('time_from', $direction);
// 日付だけ昇順/降順切り替えで時間は常に昇順にする場合
// ORDER BY reserve_date ASC/DESC, time_from ASC
// return $query->orderBy('reserve_date', $direction)->orderBy('time_from', 'asc');
}
}
View
引数のカラム名を作ったメソッド名にする
reservation/index.php
<th>@sortablelink('reserveDateTime', '予約日時')</th>
備考
<th>@sortablelink('reserve_date, time_from', '予約日時')</th>
とかでいけんじゃね?
ダメでした。
今のところ基本機能ではマルチカラムソート対応してなさそう。
ソートのカスタマイズが簡単だからそこまで問題でもないかな。