2014-07-26 3 views
0

CakePHP 시작하기와 그것을 좋아합니다. 그러나 나는이 멍청한 상황에 갇혀 있고 이것을 해결할 방법이 확실하지 않습니다.CakePHP : 기본 키를 기반으로 다른 모델에 저장된 값을 표시

기본적으로 출발 및 포트라는 두 가지 모델이 있습니다. 표는 다음과 같다 :

출발

  • ID
  • port_from
  • port_to
  • time_arrival
  • time_departure

페이지 ORTS

  • ID
  • 이름
  • 위치
  • 활성
  • 참고

지금 나는 모든 출발, port_from을 나열 할 및 port_to 포트에서 ID가 포함되어 있습니다. 대신 포트 ID를 표시하는 대신 포트 이름을 표시하고 싶지만 이것이 어떻게 수행 될지 전혀 모릅니다.

출발일 컨트롤러에 $ this-> 세트 두 세트를 사용하면 포트 테이블에서 값을 표시 할 수 있습니다. 해결책을 찾고 있었지만 belongsTo 또는 hasMany가 여기에 오는 길이라고 생각하지 않습니까?

도움 주셔서 감사합니다.

답변

0

당신은 모델의 관계를 설정해야 포트 이름 :

$departure['From']['name'] ; 
$departure['To']['name'] ; 

그리고 액세스 할 수있는 일반 Departure 정보 사용 :

$departure['Departure']['time_arrival'] ; 
+0

정말 고마워요!당신과 @ADmad는 막대한 양의 시간과 두통을 덜어주었습니다! 이것은 곧바로 효과가있었습니다. – legenda

0

Departure 모델에서 두 개의 belongsTo 연결을 설정할 수 있습니다.

$belongsTo = array(
    'PortForm' => array(
     'className' => 'Port', 
     'foreignKey' => 'port_from' 
    ), 
    'PortTo' => array(
     'className' => 'Port', 
     'foreignKey' => 'port_to' 
    ), 
); 

지금 당신은 당신이 해당 PortFromPortTo 레코드가 각 Departure 레코드에 대한 결과 배열에 Departure 모델에서 찾기()를 수행 할 때. 방금 (컨트롤러에서) 출발을 얻을 find 또는 read을 사용하여 다음

class Departure extends AppModel { 
    public $belongsTo = array(
     'From' => array(
      'className' => 'Port', 
      'foreignKey' => 'port_from' 
     ), 
     'To' => array(
      'className' => 'Port', 
      'foreignKey' => 'port_to' 
     ) 
    ) ; 
} ; 

:

$this->set('departure', $this->Departure->read(null, $id)) ; 

그리고보기

, 액세스 권한

+0

감사합니다. – legenda

관련 문제