Medoo
Medoo copied to clipboard
Sort results to show certain rows with specific ids before other
Hi, I wanted a way to show certain rows before other. This change seems to make it possibile, dunno about collateral effects, for my case is ok.
if (isset($where['ORDER'])) {
$order = $where['ORDER'];
if (is_array($order)) {
$stack = [];
foreach ($order as $column => $value) {
if (is_array($value)) {
$valueStack = [];
foreach ($value as $item) {
$valueStack[] = is_int($item) ? $item : $this->quote($item);
}
$valueString = implode(',', $valueStack);
$stack[] = "FIELD({$this->columnQuote($column)}, {$valueString})";
} elseif ($value === 'ASC' || $value === 'DESC') {
$stack[] = $this->columnQuote($column) . ' ' . $value;
} elseif (is_int($column)) {
$stack[] = $this->columnQuote($value);
}
}
$clause .= ' ORDER BY ' . implode(',', $stack);
} elseif ($raw = $this->buildRaw($order, $map)) {
$clause .= ' ORDER BY ' . $raw;
} else {
$clause .= ' ORDER BY ' . $this->columnQuote($order);
}
}