2011-12-14 12 views
1

私はcakePHPの新人です。私はBETWEENオペレータでcontroller::postConditionsメソッドを使用する必要がありますが、どのように把握できません。postConditionメソッドでBETWEEN mysql operatorを使用するには?

私はcontroller::findドキュメント上で読んだことがあるように私は、この構文を試してみました:

$this->postConditions($this->data, array('Client.client_date_inscription BETWEEN ? AND ?'=>array($this->data['Client']['client_date_inscriptionD'],$this->data['Client']['client_date_inscriptionF']))) 

をフォーム入力がそうのように作成されます。

echo $form->input('Client.client_date_inscriptionD',array('label'=>false,'type'=>'text','class'=>'toDatePicker')); 

が、これは、このエラーがスローされます。

SQL Error: 1054: Unknown column 'Client.client_date_inscriptionD' in 'where clause' 

私の質問は、0135でBETWEENオペレータをどのように使用するかです?

答えて

2

@boobyWomackを、それは私がランダムに試してみた何か。

私は多くのことを試み、答えを見つけるために料理本に潜んでいました。 postConditionsのdocではなく、実際にこれを偶然行う方法を見つけました。ここ

は、事後条件は、呼び出しの:

$this->postConditions($this->data, array('Client.client_nom' => 'LIKE', 'Client.client_prenom' => 'LIKE', 'Client.client_email' => 'LIKE','Client.client_date_inscription'=>'BETWEEN ? AND ?')) 

しかし、ビューのClient.client_date_inscription入力は、2つの値の配列を提供しなければなりません。 私は料理の中で見つけた構文でそれをやった:

$form->input('Client.client_date_inscription.0',array('label'=>false,'type'=>'text','class'=>'toDatePicker')) 
$form->input('Client.client_date_inscription.1',array('label'=>false,'type'=>'text','class'=>'toDatePicker')) 

もう一つの方法は、コントローラに手動で$this->data['Client']['client_date_inscription']の値を変更することですが、それは私の場合は関係ありませんでした。

これは、料理の本やAPIではあまり明確ではないので、これは同じ問題を抱えている人に役立ちます。

+0

いくつかの点では、ケーキがこの "SaveAll"スタイルの構文を発見の文脈で使用していたのは不明です - 私はそれがこのようになると推測していなかったでしょう - しかしそれはケーキ便利な方法を提供するためにもう一度devs :-) –

1

こんにちは、あなたのコラムは本当に最後に大文字のDと大文字のFを持っていますか?あなたができるなら私はそれを変えるだろう!ケーキの命名規則に合っていないようです。

これらの名前は明らかにCakeで使用することができます。

私はあなたが最初にケーキからの通常の検索で正しいクエリを取得する必要があると思います。 PostCondtionsメソッドは、高度なショートカット関数です。この場合、標準的な方法で機能させる方が良いかもしれません。

通常のfind()のSQLのデバッグ出力を使用して、PostCondtionsとの違いを確認できます。多分それが助けになるでしょう。

は、私はまた、「リファラ」のような何かを示唆事後条件のためのドキュメントで構文に気づく=>基本的に必要な配列パラメータ(「BETWEEN」 - その機能のためのAPIや、実際のドキュメントを読んで、あなたが必要なオプションを見つけるかもしれませんそこに!)

誰かがIRCにこのような何かを知っているかもしれません - あなたはそこに試しましたか?

幸運、あなたは私が知りたいのですが、答えを見つけた場合、バック投稿してください:)私は大文字のDとFを変更

+0

こんにちは、私は答えを見つけました、あなたが興味があれば投稿しました。 あなたの助けてくれてありがとうbtw! –

+0

やっぱり、普通の方法を使うという私の提案は、「実行することを学ぶ前に歩くことを学んでいる」と思っていたからです。 –

+1

申し訳ありませんが、私はあなたのコメントをupvoteする権利を持っていなかったと思います(十分な評判スコアではないかもしれません)。 –

関連する問題