人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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));

●質問者: xv1700
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:00 2008-09-01 23 SELECT 作成
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● @akky
●27ポイント

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

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

◎質問者からの返答

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

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

参考の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));


2 ● @akky
●27ポイント

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

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

ダミーURL

◎質問者からの返答

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

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

失敗例)

$date1 = '2007-08-20';

$date2 = '2008-08-20';

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


3 ● @akky
●26ポイント

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

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

ではないですか?

ダミー

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ