Databaze – chybne nazvy sloupcu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Muhahe
Člen | 79
+
0
-

Zdravim, zacal jsem delat pokusy s nette, ale zarazil jsem se nad problemem, kdy mi nette pouziva neexistujici nazvy sloupcu pri volani.

namespace Repositors;

use Nette;

class UkolyRepository extends Repository {

    public function findIncomplete() {
        return $this->findBy(array('hotovo' => '0'))->order('id ASC');
    }

    public function findAll() {
        foreach ($this->getTable()->order('id')->limit(5) as $ukoly) {
            echo $ukoly->nazev;


            foreach ($ukoly->related('uzivxukol') as $uzivxukol) {
                echo $uzivxukol->uzivatele->jmeno . ', ';
            }
        }
    }

}

UkolyRepository dědí od

<?php

namespace Repositors;

use Nette;

abstract class Repository extends Nette\Object {

    /** @var Nette\Database\Connection */
    protected $connection;

    public function __construct(Nette\Database\Connection $db){
        $this->connection = $db;
    }

    /**
     * Vrací objekt reprezentující databázovou tabulku.
     * @return Nette\Database\Table\Selection
     */
    protected function getTable(){
        preg_match('#(\w+)Repository$#', get_class($this), $m);
        return $this->connection->table(lcfirst($m[1]));
    }

    /**
     * Vrací všechny řádky z tabulky.
     * @return Nette\Database\Table\Selection
     */
     public function findAll()
    {
        return $this->getTable();
    }

    /**
     * Vrací řádky podle filtru, např. array('name' => 'John').
     * @return Nette\Database\Table\Selection
     */
    public function findBy(array $by)
    {
        return $this->getTable()->where($by);
    }
}

Databaze vypada takto
http://krtkovo.tranet.cz/nette.png

A ladenka hazi chybu
PDOException #42S22

SQLSTATE[42S22]: Column not found: 1054 Unknown column ‚uzivxukol.id_ukolu‘ in ‚where clause‘

Takto se snazi vykonat SQL dotaz

SELECT *
FROM uzivxukol
WHERE (uzivxukol.id_ukolu IN (100, 101, 111, 150, 204))

Prijde mi divne, proc se odkazuje na sloupec id_ukolu, ktery neni v DB nikde uveden. Nevi nekdo prosim jak je to mozne?

Editoval Muhahe (8. 6. 2013 18:56)

hrach
Člen | 1838
+
0
-

Reflection? Co to je za nadstavbu, ndb nema zadny repository. Zkus napsat report trochu lepe!

Muhahe
Člen | 79
+
0
-

Pridal jsem tam abstraktni tridu Repository, z ktere to dedi. Reflection nevim co presne je :/, ale jde mi ciste o tu metodu findAll() a hlavne ze se DB odkazuje na neexistujici sloupec. Cerpal jsem z navodu na vytvoreni prvni aplikace a dokumentace Databaze a ORM.