如何使用BETWEEN mysql运算符和postCondition方法?

时间:2011-12-14 11:04:34

标签: php mysql cakephp between

我是CakePHP的新手,我需要在controller::postConditions运算符中使用BETWEEN方法,但我无法弄清楚如何。

我尝试了这种语法,正如我在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' 

所以我的问题是,您如何将BETWEEN运算符与postConditions一起使用?

2 个答案:

答案 0 :(得分:2)

@boobyWomack我改变了大写的D和F,这是我随机尝试过的。

我尝试了许多东西并潜伏在食谱中寻找答案。 我实际上是偶然发现了如何做到这一点,而不是在postConditions doc。

这是postConditions调用:

 $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中都不是很清楚。

答案 1 :(得分:1)

嗨,你的专栏确实得到了大写的D和最后的大写字母F?如果你能,我会改变它!似乎不符合命名的蛋糕惯例。

表示显然可以将这些名称与Cake一起使用。

我认为你应该首先尝试使用Cake的正常查找来获得正确的查询。 PostCondtions方法确实是一种高级快捷方式,在这种情况下尝试获取它可能会更好以标准的方式工作。

然后你可以使用普通find()的SQL调试输出来查看它与PostCondtions的不同之处。也许这会有所帮助。

我还注意到PostConditions文档中的语法提示类似'referrer'=>'BETWEEN'(基本上需要数组参数 - 所以请阅读函数的API或实际文档,你可能会找到你需要的选项有!)

IRC上的某个人可能会知道这样的模糊内容 - 你在那里尝试过吗?

祝你好运,如果你找到我想知道的答案,请回复邮寄:)