contributte / datagrid

:muscle: DataGrid for Nette Framework: filtering, sorting, pagination, tree view, table view, translator, etc
https://contributte.org/packages/contributte/datagrid/
MIT License
290 stars 193 forks source link

Doctrine and filter numeric column #1059

Open krajcikondra opened 1 year ago

krajcikondra commented 1 year ago

Hi,

I have project with contribute/nettrine and contributte/datagrid. I have numeric column "year".

        $grid->addColumnNumber('year', 'Year');
        $grid->addFilterText('year', 'Year');

When I write some value to filter input and press enter I get following error:

An exception occurred while executing a query: SQLSTATE[42883]: Undefined function: 7 ERROR: function lower(integer) does not exist LINE 1: ...ECT COUNT(b0_.id) AS sclr0 FROM "book" b0 WHERE LOWER(b0_.... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts

Is it bug or do I something bad?

Thanks in advance

juniwalk commented 1 year ago

Hi, you have to use custom condition for the filter and write custom DQL to handle this.

$grid->addFilterText('number', 'web.order.number')->setCondition(function($qb, $query) {
    $qb->andWhere('cast(e.number as varchar) LIKE :number');
    $qb->setParameter('number', '%'.$query.'%');
});