gpt4 book ai didi

symfony1 - 使用 Propel 选择日期不为空的日期范围

转载 作者:行者123 更新时间:2023-12-02 22:02:14 24 4
gpt4 key购买 nike

使用 Propel 我想查找日期字段不为空且位于特定范围内的记录。

注意不幸的是,由于这是较大查询的一部分,因此我无法在此处使用自定义 SQL 查询。

例如:我可能有这样的记录:

---------------------
| ID | DUE_DATE |
---------------------
| 1 | NULL |
| 2 | 01/01/2010 |
| 3 | 02/01/2010 |
| 4 | NULL |
| 5 | 05/01/2010 |
---------------------

我可能想返回 due_date 介于 01/01/2010 和 02/01/2010 之间的所有行,但我不想返回 due_date 为 NULL 的记录。

在示例中我只想返回第 2 行和第 3 行。

但是,Propel 似乎覆盖了我的 NOTNULL 标准。

可以用 Propel 做到这一点吗?

谢谢!

最佳答案

为什么要创建单独的 Criterion对象?

$start_date = mktime(0, 0, 0, date("m")  , date("d")+$start, date("Y"));
$end_date = mktime(0, 0, 0, date("m") , date("d")+$end, date("Y"));

$c = new Criteria();
$c->add(TaskPeer::DUE_DATE, $end_date, Criteria::LESS_EQUAL);
$c->addAnd(TaskPeer::DUE_DATE, $start_date, Criteria::GREATER_EQUAL);
$c->addAnd(TaskPeer::DUE_DATE, null, Criteria::ISNOTNULL);

当我在 Propel 1.2、1.3 或 1.4 中尝试此操作时,我得到以下 SQL 语句:

SELECT task.TASK_ID, task.DUE_DATE FROM task WHERE ((task.DUE_DATE<=:p1 AND task.DUE_DATE>=:p2) AND task.DUE_DATE IS NOT NULL )

$c->add()方法替换给定字段的当前标准。您为TaskPeer::DUE_DATE创建您的标准,所以它们总是会取代以前的。

关于symfony1 - 使用 Propel 选择日期不为空的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769691/

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