gpt4 book ai didi

php - 如何在 Propel 中使用 MySQL 函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:12 26 4
gpt4 key购买 nike

我想选择 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);

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

关于php - 如何在 Propel 中使用 MySQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com