-1

我正在尝试使用 Criteria 和 Propel 创建以下语句:

AND unix_timestamp(table.last_action) > unix_timestamp(table.last_action) -1800

但我似乎无法正确处理

$kriterien->add(sfGuardUserProfilePeer::LAST_ACTION, 'unix_timestamp(table.last_action)-90', Criteria::GREATER_THEN);

sfGuardUserProfilePeer::LAST_ACTION不是 unix_timestamp。我怎样才能改变它呢?我已经尝试简单地更改 in 的值,LAST_ACTIONBasesGuardUserProfilePeer.php它引发了错误。

4

1 回答 1

0

没有这样的常数Criteria::GREATER_THEN——也许你的意思是Criteria::GREATER_THAN?但是,如果您使用它,则第二个参数add()必须是字符串或整数值 - 尝试使用列名或 SQL 函数将不起作用。

相反,试试这个(显然你可能需要调整 - 我不确定你到底想要实现什么):

$kriterien->add(
    sfGuardUserProfilePeer::LAST_ACTION,
    'unix_timestamp(sf_guard_user_profile.last_action) > 90',
    Criteria::CUSTOM
);

最后,该Criteria方法已被弃用。你没有说你正在使用什么版本的 Propel(这个细节应该在你的问题中),但是使用最近的东西(1.5 或 1.6)并迁移到 Query 方法是一个好主意。

于 2012-09-15T12:03:39.330 回答