0

I have a query like this:

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

It return only 1 item while I have 2 satisfy the query.

I have check with each query:

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

And

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

I got 2 items on both queries.

Can you give some hints to fix this? Thanks in advance.

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を使用して、制限していなければ返されたはずのレコード数を取得できます。

また、返されるべきレコードが実際に 2 つあることを確認しましたか。2 つのクエリを組み合わせると、そのうちの 1 つだけが両方の条件を満たす可能性があります。

また、将来のイベントをクエリする方法を説明しているPerry Bonwell のチュートリアルもチェックしてください。彼は、SQL 関数ではなく PHP を使用して日付を処理していますが、それ以外は同様のアプローチをとっています。

于 2013-10-19T00:14:19.187 に答える