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
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
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
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)