2011-12-14 2 views
1

cakePHP가 처음인데 BETWEEN 연산자를 사용하여 controller::postConditions 메서드를 사용해야하지만 어떻게 계산할 수 있습니까?BETWEEN mysql 연산자를 postCondition 메서드와 함께 사용하는 방법?

$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' 
를 I가 controller::find 문서를 읽고으로

는 I이 구하려고

제 질문은 BETWEEN 연산자를 01로 어떻게 사용합니까??

답변

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와 함께 사용할 수 있다고합니다.

나는 Cake에서 정상적인 검색으로 올바른 쿼리를 먼저 얻어야한다고 생각합니다. PostCondtions 메서드는 고급 바로 가기 함수로,이 경우에는 표준 찾기 방식으로 작업하는 것이 좋습니다.

그런 다음 일반 find()의 SQL 디버그 출력을 사용하여 PostCondtions과 다른 점을 확인할 수 있습니다. 도움이 될지도 몰라.

PostConditions에 대한 구문은 'referrer'=> 'BETWEEN'과 같은 힌트를 사용합니다 (배열 매개 변수는 기본적으로 필요하므로 API 또는 실제 문서를 읽고 필요한 옵션을 찾을 수 있습니다. !)

IRC의 누군가가 이처럼 애매한 것을 알고있을 것입니다. 거기에 시도해 봤습니까? 당신은 내가 대문자 D와 F를 변경 :

+0

안녕하세요, 답변을 찾았습니다. 관심이 있다면 게시했습니다. 도움 주셔서 감사합니다. btw! –

+0

안녕하세요 잘 했어요. 정상적인 방법을 사용하라는 제안을 적어도 저에게 표시 할 수있었습니다. 그 이유는 "실행을 배우기 전에 걷는 법을 배웠습니다"라고 생각했기 때문입니다. 멋진 방법 중 하나를 발견했습니다! –

+1

미안하지만 나는 당신의 의견을 upvote 할 권한이 없다고 생각합니다. (평판 점수가 충분하지 않을 수도 있습니다.), 이제 끝납니다 :) 다시 한 번 감사드립니다. –

관련 문제