DatatablesBundle
DatatablesBundle copied to clipboard
DateRangeFilter overwrites other filter
Hi! I think I found a bug, but I'm not certain.
I have a table with filters:
When I write a name the result is ok, but next when I choose date range in 'last seen' column (which is accurate to my result) it's returning 'no results'. The name parameter is overwritten by parameter from range:
Everything works fine when I overwrite addAndExpression method from DateRangeFilter class like this:
i have same situation.
part of datatable :
->add('status', Column::class, array(
'title' => 'Rodzaj',
'width'=>'10%',
'filter' => array(Select2Filter::class, array(
'search_type' => 'eq',
'multiple'=>true,
'select_options' => Status::getStatuses(),
))
))
->add('timeTables.fromDate', Column::class, array(
'title' => 'Termin',
'width'=>'100px',
'default_content'=>'',
'data' => 'timeTables[, ].fromDate',
'filter' => array(DateRangeFilter::class, array()),
))
when i select timeTables.fromDate i get correct query and parameters
ArrayCollection {#39161 ▼
-elements: array:2 [▼
0 => Parameter {#39181 ▼
-name: "101"
-value: "2018-07-01 00:00:00"
-type: 2
}
1 => Parameter {#39188 ▼
-name: "102"
-value: "2018-07-31 23:59:59"
-type: 2
}
]
}
1 => "SELECT partial meet.{id,name,created,status,childrenCounter}, partial timeTables.{id,fromDate}, partial profile.{id}, partial profile_country.{id}, partial tags.{id,title} FROM Mea\MountMeetBundle\Entity\Meet meet LEFT JOIN meet.timeTables timeTables LEFT JOIN meet.profile profile LEFT JOIN profile.country profile_country LEFT JOIN meet.tags tags WHERE meet.name LIKE ?101 AND (timeTables.fromDate BETWEEN ?101 AND ?102) ORDER BY meet.id desc
when i select status or any other field query is ok, but when i select timeTables.fromDate + any field - timeTables.fromDate override parameters.
ArrayCollection {#18674 ▼
-elements: array:2 [▼
0 => Parameter {#18694 ▼
-name: "101"
-value: "2018-07-01 00:00:00"
-type: 2
}
1 => Parameter {#18701 ▼
-name: "102"
-value: "2018-07-31 23:59:59"
-type: 2
}
]
}
1 => "SELECT partial meet.{id,name,created,status,childrenCounter}, partial timeTables.{id,fromDate}, partial profile.{id}, partial profile_country.{id}, partial tags.{id,title} FROM Mea\MountMeetBundle\Entity\Meet meet LEFT JOIN meet.timeTables timeTables LEFT JOIN meet.profile profile LEFT JOIN profile.country profile_country LEFT JOIN meet.tags tags WHERE meet.status = ?101 AND (timeTables.fromDate BETWEEN ?101 AND ?102) ORDER BY meet.id desc ◀"
WHERE meet.status = ?101 use same param as timeTables.fromDate = (timeTables.fromDate BETWEEN ?101 AND ?102)
Same problem here, another way around this is moving the date column to the first position so filters doesn't get overwritten.
Any ideas ?
This should be fixed !
Same issue here.
Does adding $parameterCounter += 1;
solve this issue? Than we need to file a Pull Request.