Pořadí vrácených prvků při použití pole jako parametru

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

Ahoj všem.

Mám pole prvků třeba 1,5,4,6

jak udělám v NetteDatabase, aby když to použiji v konstrukci

$this->db->table(neco)->where("uid", $pole)

mi to řádky z databáze vrátilo ve stejném pořádí, jak byly zapsány v tom poli?

V klasickém SQL dotazu použiji ORDER BY field(uid,‚1‘, ‚5‘, ‚4‘, ‚6‘), ale nevím, jak nato u ND table.

Díky moc.

David Matějka
Moderator | 6445
+
0
-

zkusil bych neco jako

->order('FIELD(?)', array_merge(array(new SqlLiteral('uid')), $pole));

(uid muzes osetrit pomoci $this->db->connection->supplementalDriver->delimite(....))

japlavaren
Člen | 404
+
+1
-

pro order by field treba osetrit, aby v podmienke orderu bola minimalne jedna hodnota. inak sa zle prelozi sql a moze nastat chyba. tj:

<?php
if($pole) { // prazdne pole sa pretypuje na false
	$result->order('FIELD(?)', array_merge(array(new SqlLiteral('uid')), $pole));
}
?>

Editoval japlavaren (23. 7. 2014 7:27)

kejlicz
Člen | 201
+
0
-

Díky moc.