3

ORDER BY myfunction(col, ?, ?) DESCのバインド値を使用して注文を生成する適切な方法は何DBIx::Classですか?

現在、これにはリテラル SQL を使用していますが、それはいくつかの理由で最適ではありません。

$rs->search(undef, { order_by => \"myfunction(col, $v1, $v2) DESC" });
4

2 に答える 2

4

このようなもの:

$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'
于 2012-08-09T10:25:24.000 に答える
2

私はなんとかDBIx::Class正しいを生成することができましたORDER BY。コードは次のとおりです。

$rs->search(undef, {
    order_by => \[
        'myfunction(mycol, ?, ?) DESC', map [dummy => $_], $v1, $v2
    ]
});
于 2012-08-09T19:07:42.807 に答える