Nette\Database query order by

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

Chci se zeptat jak mam poupravit tento priklad aby se mi hodnota v promene $order nevklada do SQL jako string, ale podle tohoto sloupce se to srovnalo? Ted se to vlozi jako ..ORDER BY „obrat“ DESC.. a neradi to.

    public function getStats($parametr) {
        switch ($parametr) {
            case 'Def':
                $order = 'obrat';
                break;
            default :
                $order = 'vydelek';
        }

        return $this->database->query('
            select
            a.vydelek,
            a.obrat,
	    ...
	    ORDER BY ? DESC
            LIMIT 50
        ', $this->firma->firma_id, $order);
}

Funkci query musim pouzit protoze SQL dotaz je hodne slozity a nejsem schopen ho prepsat. Vim ze by to slo udelat ..ORDER BY' . $order . 'DESC.., ale nak se mi to moc nelibi.

Editoval saimons (27. 2. 2012 15:31)

OK3
Člen | 91
+
0
-

Rychlej fix by mohl být:

return $this->database->query('
        select
        a.vydelek,
        a.obrat,
        ...
        ORDER BY ? DESC
        LIMIT 50
    ', $this->firma->firma_id, new \Nette\Database\SqlLiteral($order));

Ale asi to nebude úplně košer. NDB nepoužívám…

Editoval OK3 (27. 2. 2012 16:13)