如何在 Propel 中使用 MySQL 函数

2023-12-14

我想选择 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 之外还有什么提示吗?


我认为除了使用 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);

这是因为 Propel 试图与 DBMS 无关,通过简单的配置值更改来帮助迁移,因此它没有内置任何 DBMS 特定功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Propel 中使用 MySQL 函数 的相关文章

随机推荐