Tom*_*ohl 5 php orm propel symfony1 criteria
我想选择1个月或更新的记录.
查询是:SELECT*FROM foobar WHERE created_at> DATE_SUB(curdate(),INTERVAL 1 MONTH)
在Symfony中使用Propel,我做:
$ c = new Criteria
$ 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之外的任何提示?
我认为除了使用 Criteria::CUSTOM 或执行如下所示的自定义 SQL 查询之外,没有其他选择:
$con = Propel::getConnection(DATABASE_NAME);
$sql = "SELECT foobar.* FROM foobar WHERE created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)";
$stmt = $con->prepare($sql);
$stmt->execute();
$books = FoobarPeer::populateObjects($stmt);
Run Code Online (Sandbox Code Playgroud)
这是因为 Propel 试图与 DBMS 无关,通过简单的配置值更改来帮助迁移,因此它没有内置任何 DBMS 特定功能。
| 归档时间: |
|
| 查看次数: |
6088 次 |
| 最近记录: |