/ MySQL-Funktionen auf der rechten Seite in DBIx :: Class - mysql, perl, dbix-class

rechte MySQL-Funktionen in DBIx :: Class - mysql, perl, dbix-class

Wenn ich in DBIx :: Class eine Abfrage mit dieser Syntax erzeuge:

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

Die generierte Abfrage ist perfekt, außer dass die Funktion auf der rechten Seite in Anführungszeichen steht.

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

Wenn es nicht zitiert wurde, wäre es korrekt. Wie würde ich das tun?

Vielen Dank, rauben

Antworten:

4 für die Antwort № 1

Übergeben Sie die Zeichenfolge stattdessen als Skalarreferenz:

...
"Time(submitted_at)" => "> Time(Now()-Interval $wait_period minute)"
...

5 für die Antwort № 2

Es scheint Die Art, wie Ausdrücke ausgeführt werden, besteht darin, einen Skalarref oder ein Array Ref zu übergeben, wenn Sie Literal-SQL verwenden möchten.

Hier ist ein Beispiel, das die Verwendung eines Abfrageparameters für die $wait_period Variable in den Ausdruck:

...
"Time(submitted_at)" => { ">" => ["Time(Now()-Interval ? Minute)", $wait_period] }
...