laravel admin时间date转时间戳查询:
由于数据库记录的是时间戳,但是页面上想展示用户友好的区间查询样式,因此需要自定义小组件,方式如下:
<?php
namespace App\Admin\Filters;
use Encore\Admin\Grid\Filter\Between;
class TimestampBetween extends Between
{
/**
* Get condition of this filter.
* @param array $inputs
* @return mixed
*/
public function condition($inputs)
{
if (!array_has($inputs, $this->column)) {
return;
}
$this->value = array_get($inputs, $this->column);
$value = array_filter($this->value, function ($val) {
return $val !== '';
});
if (empty($value)) {
return;
}
if (!isset($value['start'])) {
$value['end'] = strtotime($value['end']);
return $this->buildCondition($this->column, '<=', $value['end']);
}
if (!isset($value['end'])) {
$value['start'] = strtotime($value['start']);
return $this->buildCondition($this->column, '>=', $value['start']);
}
$this->query = 'whereBetween';
$value['end'] = strtotime($value['end']);
$value['start'] = strtotime($value['start']);
return $this->buildCondition($this->column, $value);
}
}
使用:
$filter->use(new TimestampBetween('created_at', __('Created At')))->datetime()->default([
'start' => date('Y-m-d'),
'end' => date('Y-m-d', strtotime('+1 day')),
]);