datagrid icon indicating copy to clipboard operation
datagrid copied to clipboard

Doctrine and filter numeric column

Open krajcikondra opened this issue 2 years ago • 1 comments
trafficstars

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 sclr_0 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

krajcikondra avatar Dec 30 '22 17:12 krajcikondra

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.'%');
});

juniwalk avatar Jan 13 '23 18:01 juniwalk