yajra / laravel-datatables-docs

Laravel DaTatables package documentation
https://yajrabox.com/docs/laravel-datatables
91 stars 558 forks source link

filterColumn wrong behavior? #108

Open diorgesl opened 1 month ago

diorgesl commented 1 month ago

Look this code

public function plex_cliente_datatables() {
        $clientes = PlexCliente::query();
        return DataTables::eloquent($clientes->with('servicos_alias'))
            ->addColumn('servicos_alias', function(PlexCliente $c) {
                $servicos = null;
                foreach($c->servicos_alias as $servico) {
                    $servicos .= $servico->id . ($servico->alias ? '(' . $servico->alias . ')' : ''). ', ';
                }
                return substr($servicos, 0, -2);
            })
            ->filterColumn('cpf_cnpj', function($query, $keyword) {
                $sql = "REPLACE(REPLACE(REPLACE(cpf_cnpj, '.', ''), '-', ''), '/', '')  LIKE ?";
                $keyword = preg_replace('/\D/', '', $keyword);
                $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->toJson();
    }

When I use the filterColumn, the search works only for this column.

Can you help how to fix this?

yajra commented 1 month ago

That is the expected behavior, filterColmn is only applied to the selected column.

Or do you mean, the search is not working at all except on cpf_cnpj? You can debug the SQL generated by setting APP_DEBUG=true and inspect the ajax request. Json response will display the SQL used by the package.