Was ist der richtige Weg, um einen Auftrag durch gleiches zu erzeugen ORDER BY myfunction(col, ?, ?) DESC
mit bind Werten in DBIx::Class
?
Zur Zeit verwende ich dafür literal SQL, aber das ist aus verschiedenen Gründen nicht optimal.
$rs->search(undef, { order_by => "myfunction(col, $v1, $v2) DESC" });
Antworten:
4 für die Antwort № 1Etwas wie das:
$rs->search(
undef,
{
"+columns" => [{
"res" => {
"func" => ["me.col", ["?" => $val1], ["?" => $val2]],
"-as" => "res",
},
}],
"order_by" => {"-desc" => "res"},
}
);
wird generieren (für MySQL & ($val1, $val2) = qw(val1 val2)
):
SELECT `me`.`id`, ..., FUNC( `me`.`col`, ?, ? ) AS `res`
FROM `table` `me`
ORDER BY `res` DESC:
"val1",
"val2"
2 für die Antwort № 2
Ich habe es geschafft zu bekommen DBIx::Class
das richtige generieren ORDER BY
. Hier ist der Code:
$rs->search(undef, {
order_by => [
"myfunction(mycol, ?, ?) DESC", map [dummy => $_], $v1, $v2
]
});