2010-12-29 3 views
0

안녕하세요, 지금 당분간이 문제가 발생하고 있으며 내 인생에 도움이되지 않는 것은 원격으로 유용한 것을 추적하는 것 같습니다.CakePHP find가 매번 동일한 값을 반환합니다.

사용자가 내장 된 Auth 구성 요소를 사용하여 애플리케이션에 로그인하면 school_id 필드를 사용하여 연결된 학교의 이름을 찾고 (이 이름을 보기의 머리글). 나는 또한 길 아래의 다른 행동에서 학교 정보의 다른 여러 부분들을 불러야 할 필요가 있음을 알았다.

나는 다음 두 가지를 시도했지만 어느 것도 작동하지 않는 것 같습니다. 여부에 관계없이 사용자가 "school_id"또는 수동으로 포함시킨 숫자에 따라 School-> find()를 수행 할 수 있습니다. 그것은 매번 동일한 학교의 정보 (ID가 1 인 학교)를 반환합니다.

는 여기에 내가 무엇을 시도했다입니다 :

$this->set('school_name', $this->School->find('first', array('conditions' => array('School.id' == 2)))); 

$this->set('school_info', $this->School->find('first', array('conditions' => array('School.id' == $this->Auth->User('school_id'))))); 

$this->set('school_info', $this->School->find($this->Auth->User('school_id'); 

다시 한번, 코드가 아무것도 반환하지에 문제가되지 않습니다. 매번 동일한 학교를 반환합니다 (ID = 1).

이것은 상상할 수있는 것처럼 상당히 실망스럽고 제공 할 수있는 도움이 정말 좋을 것입니다.

감사합니다, 벤

답변

2

당신은 == 기호를 사용하는 대신에 당신의 상태에 =>된다.

이 있어야한다 :

$this->School->find('first', array('conditions' => array('School.id' => 2)))); 

는 기억 == 조건부 연산자입니다. =>은 배열 키 - 값 쌍을 만드는 데 사용되는 화살표 표기입니다.

간단한 방법은 될 것이라고 할 수 있습니다 : 당신이 id을 공급하는 경우

$this->School->findById($this->Auth->user('school_id')); 

findById 아닌 모든 것을 포괄하는 find 방법을 제공합니다. 즉, 올바른 운영자를 사용하고 있는지 계속주의해야합니다. :)

빠른 참고 : 'School.id'== 2는 false으로 평가되며 array(false)은 하나의 요소가 false 인 배열이므로 오류가 발생하지 않았습니다.

+0

감사합니다. 언젠가는 신선한 눈을 가졌다 고 생각합니다. 그게 얼마나 오래 걸렸는지 너는 모른다. (나는 지금 바보처럼 느껴진다.) –

+0

어레이를 제거하는 방법은 하나의 값만 반환하므로? 나는 그것을 사용할 필요가있을 때마다 foreach를 갖고 싶지 않습니다. –

+0

관련 코드를 게시 해주십시오. 어떤 배열에 대해 이야기하고 있습니까? 'find ('first')'를 사용하고 있으므로 foreach가 포함되어서는 안됩니다. – RabidFire

관련 문제