-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_ACTIONunix_timestamp ではありません。どうすればそのように変更できますか?LAST_ACTIONinの値を単純に変更しようとしましBasesGuardUserProfilePeer.phpたが、エラーが発生しました。

4

1 に答える 1

0

のような定数はありませんCriteria::GREATER_THEN- おそらくあなたが意味したのCriteria::GREATER_THANですか?ただし、それを使用する場合、2 番目のパラメーターadd()は文字列または整数値である必要があります。列名または SQL 関数を使用しようとしても機能しません。

代わりに、これを試してください(明らかに微調整が必​​要な場合があります-正確に何を達成したいのかわかりません):

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

最後に、このCriteriaアプローチは非推奨です。使用している Propel のバージョンについては言及していませんが (この詳細は質問に記載する必要があります)、最近のもの (1.5 または 1.6) を使用し、代わりにクエリ アプローチに移行することをお勧めします。

于 2012-09-15T12:03:39.330 に答える