symfony1.1でのCriteriaの質問です。

betweenをcriteriaで作成したいのですが、方法がわかりません。
●通常SQL
select * from memos WHERE create_date BETWEEN '2008-09-01 00:00:00' AND '2008-09-30 23:59:59'
どなたかご教授ください。
Criteria::CUSTOMなどを使用するのでしょうか?

失敗例)
$c1 = $c->getNewCriterion(SymfonyPeer::CREATED_AT, $ymd,Criteria::LESS_EQUAL);
$c1->addAnd($c->getNewCriterion(SymfonyPeer::CREATED_AT,$ymd,Criteria::GREATER_EQUAL));

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2009/01/24 19:52:40
  • 終了:2009/01/31 19:55:02

回答(3件)

id:AKIMOTO No.1

@akky回答回数27ベストアンサー獲得回数82009/01/25 01:41:51

ポイント27pt

symfonyのサイトのsnippetの中に、大小比較を二つ使ってやる方法と、CUSTOMを使ってやる方法の両方が出ています

snippetを検索するといろんな事例が出ているのでいいですよ。

id:xv1700

すいません。返事がだいぶ遅くなりました。

回答ありがとうございます。

参考のHPにあったCriteriaですが、①RangePeer::START_DATE②RangePeer::END_DATEとなぜ二つあるのでしょうか?

普通なら一つではないでしょうか?検索するカラム【

失敗例)の条件で使用しているSymfonyPeer::CREATED_ATとか】


$date1 = '2007-08-20';

$date2 = '2008-08-20';

// test against date1

$date1Criterion = $c->getNewCriterion(RangePeer::START_DATE, $date1, Criteria::LESS_EQUAL);

// test against date2

$date2Criterion = $c->getNewCriterion(①RangePeer::START_DATE, $date2, Criteria::LESS_EQUAL);

// conjunction

$date1Criterion->addAnd($c->getNewCriterion(②RangePeer::END_DATE, $date1, Criteria::GREATER_EQUAL));

$date2Criterion->addAnd($c->getNewCriterion(RangePeer::END_DATE, $date2, Criteria::GREATER_EQUAL));

2009/01/29 16:50:26
id:AKIMOTO No.2

@akky回答回数27ベストアンサー獲得回数82009/01/29 17:16:05

ポイント27pt

そのサンプルは二つの日時のいずれかが期間に入ってるか調べるサンプルだからです。

betweenを使わず(サンプルの2の方法ではなく)求めるという意味で1のサンプルは十分なヒントかと思いましたがどうでしょう?

ダミーURL

id:xv1700

うーーん。わかりません。

実装してみましたが微妙でした。

失敗例)

$date1 = '2007-08-20';

$date2 = '2008-08-20';

$c->add(TestPeer::CREATED_AT," between ".$date1." and ".$date2, Criteria::CUSTOM);

2009/01/29 19:48:34
id:AKIMOTO No.3

@akky回答回数27ベストアンサー獲得回数82009/01/29 20:24:49

ポイント26pt

betweenは使ってもいいのですね。上のコードは、サンプル2にならうならば

$c->add(TestPeer::CREATED_AT, TestPeer::CREATED_AT." between ".$date1." and ".$date2, Criteria::CUSTOM);

ではないですか?

ダミー

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません