0

我有一个这样的查询:

$Record = new Pod('event');
$where_clause = "DATE(enddate) >= CURDATE() AND event_type.name='Training'";
$Record->find('startdate ASC', 100, $where_clause);

它只返回 1 项,而我有 2 项满足查询。

我检查了每个查询:

$Record = new Pod('event');
$where_clause = "DATE(enddate) >= CURDATE()";// AND 
$Record->find('startdate ASC', 100, $where_clause);

$Record = new Pod('event');
$where_clause = "event_type.name='Training'";// AND 
$Record->find('startdate ASC', 100, $where_clause);

我在两个查询中都得到了 2 项。

你能给出一些提示来解决这个问题吗?提前致谢。

4

1 回答 1

2

您使用的代码旨在与 Pods 1.X 一起使用,但您的查询本身看起来不错。对于 Pods 2.X,您可能需要执行以下代码,它将pods()全局函数与其方法​​find结合起来,然后使用total方法检查返回的项目数。

$param = array( 
    "where" => "DATE(enddate) >= CURDATE() AND event_type.name='Training'",
    "orbery" => "t.startdate ASC",
    "limit" => "100",
);
$pod = pods( 'event', $param );
$number = $pod->total();

您知道在 $pod 中有记录,在 $number 中有总数,当您遍历 $pod 中的结果时,您可以使用它们来控制循环。如果你愿意,你可以使用total_found来获取如果你不限制它会返回的记录数。

另外,您是否检查过您确实有两条记录应该返回。当您组合这两个查询时,可能只有其中一个同时满足这两个条件。

您还应该查看Perry Bonwell 的教程,他解释了如何查询未来事件。他使用 PHP,而不是 SQL 函数来处理日期,但除此之外,他也有类似的方法。

于 2013-10-19T00:14:19.187 回答