Implemented random ordering for databases that support it
This commit is contained in:
parent
3767956481
commit
9aad56fafe
@ -355,7 +355,11 @@ class Query_Builder {
|
||||
*/
|
||||
public function order_by($field, $type="")
|
||||
{
|
||||
// @todo Implement Order by Random
|
||||
// Random case
|
||||
if (stripos($type, 'rand') !== FALSE)
|
||||
{
|
||||
$type = (($rand = $this->sql->random()) !== FALSE ) ? $rand : 'ASC';
|
||||
}
|
||||
|
||||
// Set fields for later manipulation
|
||||
$field = $this->db->quote_ident($field);
|
||||
@ -370,7 +374,9 @@ class Query_Builder {
|
||||
}
|
||||
|
||||
// Set the final string
|
||||
$this->order_string = ' ORDER BY '.implode(',', $order_clauses);
|
||||
$this->order_string = (empty($rand))
|
||||
? ' ORDER BY '.implode(',', $order_clauses)
|
||||
: ' ORDER BY'.$rand;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -120,6 +120,19 @@ class FirebirdQBTest extends UnitTestCase {
|
||||
$this->assertTrue(is_resource($query));
|
||||
}
|
||||
|
||||
function TestOrderByRand()
|
||||
{
|
||||
$query = $this->qb->select('id, key as k, val')
|
||||
->from('create_test')
|
||||
->where('id >', 0)
|
||||
->where('id <', 9000)
|
||||
->order_by('id', 'rand')
|
||||
->limit(5,2)
|
||||
->get();
|
||||
|
||||
$this->assertTrue(is_resource($query));
|
||||
}
|
||||
|
||||
/*function TestGroupBy()
|
||||
{
|
||||
$query = $this->qb->select('id, key as k, val')
|
||||
|
@ -114,6 +114,19 @@
|
||||
$this->assertIsA($query, 'PDOStatement');
|
||||
}
|
||||
|
||||
function TestOrderByRandom()
|
||||
{
|
||||
$query = $this->qb->select('id, key as k, val')
|
||||
->from('create_test')
|
||||
->where('id >', 0)
|
||||
->where('id <', 9000)
|
||||
->order_by('id', 'rand')
|
||||
->limit(5,2)
|
||||
->get();
|
||||
|
||||
$this->assertIsA($query, 'PDOStatement');
|
||||
}
|
||||
|
||||
function TestGroupBy()
|
||||
{
|
||||
$query = $this->qb->select('id, key as k, val')
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user