filterDefinition = self::availableQueryFilters(); } /** * Build DataTable class. * * @param mixed $query Results from query() method. * @return \Yajra\DataTables\DataTableAbstract */ public function dataTable($query) { $dataTable = new EloquentDataTable($query); $this->applyLinks($dataTable, self::SHOW_URL_ROUTE, 'leads__sms_'); $dataTable->filterColumn('created_at', function ($query, $keyword) { $dates = DataTableHelper::getDatesForFilter($keyword); if ($dates != null) { $query->whereBetween('sms_msg.created_at', [$dates[0], $dates[1]]); } }); $dataTable->filterColumn('updated_at', function ($query, $keyword) { $dates = DataTableHelper::getDatesForFilter($keyword); if ($dates != null) { $query->whereBetween('sms_msg.updated_at', [$dates[0], $dates[1]]); } }); $dataTable->filterColumn('senttime', function ($query, $keyword) { $dates = DataTableHelper::getDatesForFilter($keyword); if ($dates != null) { $query->whereBetween('sms_msg.senttime', [$dates[0], $dates[1]]); } }); return $dataTable; } /** * Get query source of dataTable. * * @return \Illuminate\Database\Eloquent\Builder */ public function query(Sms $model) { return $model->newQuery() ->leftJoin('sms_dict_sender', 'sms_msg.sms_sender_id', '=', 'sms_dict_sender.id') ->select( 'sms_msg.*', 'sms_dict_sender.name as sender' ); } public function html() { return $this->tableBuilder(); } /** * @return array */ protected function getColumns() { return $this->btnQuick_show + self::availableColumns(); } }