Bug u agregačních funkcí v GroupedSelection
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Caine
- Člen | 216
Mám následující funkci:
public function isExclusiveInterval(ActiveRow $offer, $startTime, $endTime, $type) {
$result = $offer->related('modification')
->where('type', $type)
->where(
'(? BETWEEN start_time AND end_time) OR (? BETWEEN start_time AND end_time) OR ' .
'(start_time BETWEEN ? AND ?) OR (end_time BETWEEN ? AND ?)',
$startTime, $endTime,
$startTime, $endTime,
$startTime, $endTime
)
->count('*');
return $result ? false : true;
}
Pokud onu funkci spustím s různými parametry, používá se stále stejný (první) dotaz s prvními parametry např:
SELECT COUNT(*), `modification`.`id`
FROM `modification`
WHERE (`modification`.`id` IN (11778, 11860, 11861, 11951, 11952, 11990, 11991)) AND (`type` =
1) AND (('2012-05-09 10:41:13' BETWEEN `start_time` AND `end_time`) OR ('2012-05-10 00:00:00' BETWEEN
`start_time` AND `end_time`) OR (`start_time` BETWEEN '2012-05-09 10:41:13' AND '2012-05-10 00:00:00')
OR (`end_time` BETWEEN '2012-05-09 10:41:13' AND '2012-05-10 00:00:00'))
GROUP BY `modification`.`id`
Chybu vidim v tomto řádku https://api.nette.org/…ion.php.html#108,
kde se asi cachuje, ale bez hodnot parametrů, takže pokud si tam přidám
např.
implode('', \Nette\Utils\Arrays::flatten($this->parameters))
,
už to funguje správně.