2009-11-18 6 views
1

В DBIx :: Class, когда я генерировать запрос, используя следующий синтаксис:правой стороне функции MySQL в DBIx :: Класс

... 
'Time(submitted_at)' => { '>' => 'Time(Now()-Interval ' . $wait_period . ' minute)' } 
... 

Сформированный запрос является совершенным за исключением того факта, что функция, правая часть находится в кавычках.

... AND (Time(submitted_at) > 'Time(Now()-Interval 5 minute)') ... 

Если бы это не было указано, это было бы правильно. Как мне это сделать?

Спасибо, Роб

ответ

4

передать строку в качестве скалярной ссылки вместо:

... 
'Time(submitted_at)' => \"> Time(Now()-Interval $wait_period minute)" 
... 
+0

Спасибо за ответы. Я не могу понять, почему, однако, это не интерпретация ссылок. С вышеприведенным (не изменено вообще) я получаю этот SQL-код: ... (Время (отправлено_ат)> 'SCALAR (0x108b8cd8)') ... – rplevy

+0

Хм, мне кажется, он любит только скалярные ссылки на верхнем уровне хэш. Я изменил свой ответ соответственно, теперь он работает? –

+0

Yup Я понял это сейчас и был о его публикации, но вы избили меня. Спасибо за помощь! – rplevy

5

Это seems что способ сделать выражение, чтобы передать скалярный реф или массив реф, если вы хотите использовать буквальный SQL.

Вот пример, показывающий, используя параметр запроса для переменной $wait_period в выражение:

... 
'Time(submitted_at)' => { '>' => \['Time(Now()-Interval ? Minute)', $wait_period] } 
... 
+1

+1 для использования параметра запроса, а не для конкатенации простой строки –