Problem s praci s Nette\Database a volanim procedury
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- saimons
- Člen | 293
Potreboval bych pracovat s takovouto strukturou aplikace, ale nedari se mi to timto zpusobem. Nevite jak by se to dalo poupravit?
Model
/**
* Vrati data do kalendare konkretniho tymu
* @return array
*/
public function getCalendar() {
return $this->database->query('CALL kalendar(?)', $this->team->tym_id);;
}
/**
* Vrati dny ve kterych tym obdrzel vyzvu na zápas
* @return \Nette\Database\Table\Selection
*/
public function getVyzva() {
$date = new \DateTime();
return $this->database->table('utkani')->where('tymVyzyvany_id', $this->team->tym_id)->where('akceptovano = 0')->where('DATE(datumCas) > ?', $date->format('Y-m-d'));
}
Presenter:
foreach ($this->context->calendarCalendar->calendar AS $c) {
$events = ...
}
foreach ($this->context->calendarCalendar->vyzva AS $v) {
$events = ...
}
$this->sendResponse(new JsonResponse($events));
Server mi vsak hlasi chybu:
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
- saimons
- Člen | 293
To jsem zkousel, ale chovalo se to uplne stejne (chyba na dalsim pokusu neco cist z DB), jedine co mi pomohlo, ze jsem po prvnim foreachi pouzil closeCursor() na select s CALLem. Ale je to problem pokud bych to chtel vypisovat v template, musel bych pak udelat toto:
$vysledky = $this->database->query('CALL vysledky(?)', $kolo);
foreach ($vysledky AS $v) {
$result[] = $v;
}
$vysledky->closeCursor();
return $result;
Editoval saimons (24. 5. 2012 17:39)