Nette 2.1 vlastní metoda pro query

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

Zdravim.
Používám nejnovější sestavení Nette 2.1 ve kterém si píši vlastní SQL dotazy.

Používám třídu Repository od které dědí všechny modely:

abstract class Repository extends Nette\Object
{
    public $selectionFactory;

    protected $tableName;

...
    protected function query( $sStmt )
    {
        return $this->selectionFactory->getConnection()->query( $sStmt );
    }
}

Když chci v modelu vykonat vlastní dotaz:

class MyModelRepository extends Repository
{
...
    $id = 5;
    $data = $this->query( "select * from users where id = ? ", $id );
...
}

Jak mám napsat funkci query aby ji bylo možné volat s parametrem: "select * from users where id = ? ", $id

Takhle mi to funguje: $this->selectionFactory->getConnection()->query( "select * from users where id = ? ", $id );

ale já bych chtěl volat: $this->query(".. = ?", $id)

David Matějka
Moderator | 6445
+
0
-

treba takhle:

protected function query( $sStmt )
{
    return call_user_func_array(array($this->selectionFactory->getConnection(), 'query'), func_get_args());
}

EDIT: jo a moc se mi nelibi tahani connection ze selectionFactory, cistci bude pozadovat jak SF tak connection

Editoval matej21 (24. 7. 2013 16:19)

duskohu
Člen | 778
+
0
-

Mam pocit ze takto:

protected function getTable()
{
	return $this->selectionFactory->table($this->tableName);
}

$this->getTable()->query();

Edit: sorac, tak nie

Editoval duskohu (24. 7. 2013 22:17)

hrach
Člen | 1838
+
0
-

Duskohu napsal blbost :) tak fakt ne