【发布时间】:2010-09-20 14:06:16
【问题描述】:
我想选择 1 个月或更新的记录。
查询是:SELECT * FROM foobar WHERE created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)
在 Symfony 中使用 Propel,我这样做:
$c = 新标准
$c->add(FoobarPeer::CREATED_AT, "DATE_SUB(curdate(), INTERVAL 1 MONTH)", Criteria::GREATER_THAN);
Propel 生成的是:SELECT * FROM foobar WHERE created_at > 'DATE_SUB(curdate(), INTERVAL 1 MONTH)' - 换句话说,它将 MySQL 函数放在单引号中,这使它成为一个(无意义的)字符串和我没有记录。
我现在做的是:
$c->add(FoobarPeer::CREATED_AT, "created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)", Criteria::CUSTOM);
但我不想使用自定义解决方法,除非我必须这样做。除了使用 Criteria::CUSTOM 还有什么提示吗?
【问题讨论】:
-
自从回答了这个问题以来,Propel 已经有了很大的发展,这里有一些注意事项(由 Propel 项目负责人撰写),说明何时使用 ORM 或原始 SQL:propel.posterous.com/how-can-i-write-this-query-using-an-orm
标签: php orm symfony1 criteria propel