我是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
一起使用?
答案 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上的某个人可能会知道这样的模糊内容 - 你在那里尝试过吗?
祝你好运,如果你找到我想知道的答案,请回复邮寄:)