Как использовать МЕЖДУ оператором mysql с методом postCondition? - PullRequest
1 голос
/ 14 декабря 2011

Я новичок в 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 ]

2 голосов
/ 15 декабря 2011

@ boobyWomack Я изменил прописные буквы D и F, это то, что я попробовал случайно.

Я попробовал много вещей и скрылся в кулинарной книге, чтобы найти ответ.На самом деле я нашел, как это сделать случайно, а не в документе postConditions.

Вот вызов 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 голос
/ 14 декабря 2011

Привет, в вашей колонке действительно прописные буквы D и прописные буквы F в конце?Я бы изменил это, если бы ты мог!Кажется, не подходит для именования тортов.

, в котором говорилось, что можно использовать эти имена с Cake.

Я думаю, что вы должны сначала попытаться получить правильный запрос с помощью обычной находки из Cake. Метод PostCondtions действительно является продвинутой функцией быстрого доступа, и в этом случае может быть лучше попытатьсязаставить его работать стандартным способом поиска.

тогда вы можете использовать отладочный вывод SQL из обычного find (), чтобы увидеть, чем он отличается от PostCondtions.Может быть, это поможет.

Я также заметил, что синтаксис в документах для PostConditions намекает на что-то вроде 'referrer' => 'BETWEEN' (параметры массива нужны в основном - так что читайте API или фактические документы для функции, и вы можете найти опциювам нужно там!)

Кто-то в IRC может знать что-то неясное, подобное этому - вы пробовали там?

удачи, пожалуйста, напишите, если найдете ответ, который я хотел бы узнать :)

...