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)