Jak předat parametr do ORDER BY (Selection->order())

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

Potřebuji do ORDER BY předat parametry (obsahuje totiž počítaný výraz). Funkce Selection->order() na rozdíl od Selection->where() parametery nebere. Jak správně na to v Nette?
(Napadlo mě to zkusit vypočítat v SELECT, bohužel Selection->select() také parametry nebere.)

enumag
Člen | 2118
+
0
-

Na to bys potřeboval tohle, a je otázka zda se to do Nette dostane (osobně bych to docela uvítal).

Nyní budeš muset použít Connection::query. Pokud to potřebuješ mít jako Selection tak by to možná šlo obejít přes view, ale za to neručím. ;-)

hrach
Člen | 1838
+
0
-

Je treba uvest konkretni priklad. Nejaky workaround existovat bude.

x08
Člen | 3
+
0
-

Například toto:

$results = $this->getTable()
	...
        ->where("place.latitude > ?", $lat - $this->latdif)
        ->where("place.latitude < ?", $lat + $this->latdif)
        ->where("place.longtitude > ?", $lng - $this->lngdif)
        ->where("place.longtitude < ?", $lng + $this->lngdif)
        ->order("ROUND(SQRT((POW((place.latitude - $lat) * 111.317, 2)"
            . " + POW((place.longtitude - $lng) * 111.317 * COS(RADIANS($lat)), 2))), 1)")
	...

Jako workaround je použito lepení stringů. Tak jsem si říkal, jestli neexistuje nějaká knihovna do PHP, která by toto uměla.

(PS: Je tam překlep v databázi – aby to někoho nemátlo.)

Editoval x08 (22. 3. 2013 9:16)