1
0
mirror of https://github.com/dg/dibi.git synced 2025-02-22 18:02:25 +01:00

fixed %by

This commit is contained in:
David Grudl 2008-10-01 16:23:44 +00:00
parent 9eddba204f
commit 44f281de27
2 changed files with 16 additions and 9 deletions

View File

@ -245,21 +245,23 @@ abstract class DibiTable extends DibiObject
/**
* Selects all rows.
* @param array conditions
* @param string column to order by
* @param string|array column to order by
* @return DibiResult
*/
public function findAll($conditions = NULL, $order = NULL)
{
$order = func_get_args();
if (is_array($conditions)) {
array_shift($order);
} else {
$conditions = NULL;
if (!is_array($order)) {
$order = func_get_args();
if (is_array($conditions)) {
array_shift($order);
} else {
$conditions = NULL;
}
}
return $this->complete($this->connection->query(
'SELECT * FROM %n', $this->name,
'%ex', $conditions ? array('WHERE %and', $conditions) : NULL,
'%ex', $order ? array('ORDER BY %n', $order) : NULL
'%ex', $order ? array('ORDER BY %by', $order) : NULL
));
}

View File

@ -249,8 +249,12 @@ final class DibiTranslator extends DibiObject
case 'by': // key ASC, key DESC
foreach ($value as $k => $v) {
$v = (is_string($v) && strcasecmp($v, 'desc')) || $v > 0 ? 'ASC' : 'DESC';
$vx[] = $this->delimite($k) . ' ' . $v;
if (is_string($k)) {
$v = (is_string($v) && strcasecmp($v, 'desc')) || $v > 0 ? 'ASC' : 'DESC';
$vx[] = $this->delimite($k) . ' ' . $v;
} else {
$vx[] = $this->delimite($v);
}
}
return implode(', ', $vx);
@ -306,6 +310,7 @@ final class DibiTranslator extends DibiObject
case 't': // datetime
return $this->driver->escape(is_string($value) ? strtotime($value) : $value, $modifier);
case 'by':
case 'n': // identifier name
return $this->delimite($value);