ORDER BY myfunction(col, ?, ?) DESC
のバインド値を使用して注文を生成する適切な方法は何DBIx::Class
ですか?
現在、これにはリテラル SQL を使用していますが、それはいくつかの理由で最適ではありません。
$rs->search(undef, { order_by => \"myfunction(col, $v1, $v2) DESC" });
ORDER BY myfunction(col, ?, ?) DESC
のバインド値を使用して注文を生成する適切な方法は何DBIx::Class
ですか?
現在、これにはリテラル SQL を使用していますが、それはいくつかの理由で最適ではありません。
$rs->search(undef, { order_by => \"myfunction(col, $v1, $v2) DESC" });
このようなもの:
$rs->search(
undef,
{
'+columns' => [{
'res' => {
'func' => ['me.col', \['?' => $val1], \['?' => $val2]],
'-as' => 'res',
},
}],
'order_by' => {'-desc' => 'res'},
}
);
が生成されます (MySQL & の場合($val1, $val2) = qw(val1 val2)
):
SELECT `me`.`id`, ..., FUNC( `me`.`col`, ?, ? ) AS `res`
FROM `table` `me`
ORDER BY `res` DESC:
'val1',
'val2'
私はなんとかDBIx::Class
正しいを生成することができましたORDER BY
。コードは次のとおりです。
$rs->search(undef, {
order_by => \[
'myfunction(mycol, ?, ?) DESC', map [dummy => $_], $v1, $v2
]
});