2013-05-22 2 views
0

관련 모델 데이터를 Cakephp 1.3에 저장하는 방법을 이해하는 데 문제가 있습니다. 저는 정책이라는 모델과 Declination이라는 모델을 가지고 있습니다. 정책 hasMany Declinations. Declinations belongsTo 정책. 원하는 것은 정책 테이블의 policy_id를 Declinations 테이블의 policy_id 필드에 저장하는 것입니다. 그래서 문제는 해당 모델에서 Policy_Id를 잡는 방법입니다. Declination 모델 또는 컨트롤러에서 Policy_Id를 먼저 설정 한 다음보기의 숨겨진 필드로 전달해야합니까? 여기 관련 모델 데이터 저장

여기

public $hasMany = array(
      'Declination' => array(
     'className' => 'Declination', 
     'foreignKey' => 'policy_id', 
     'dependent' => true 
    ) 

을 다음과 내 컨트롤러 여기

public function add($id = null) { 
    if (!empty($this->data)) { 
     $this->Declination->create(); 
     if ($this->Declination->saveAll($this->data['Declination'])) { 
      $this->Session->setFlash(__('Declinations saved.', true)); 
      $this->redirect(array(
       'controller' => 'coverages', 
       'action' => 'view', 
       $id 
      )); 
     } else { 
      $this->Session->setFlash(__('Declinations failed to save.', true)); 
     } 
    } 
    $reasons = $this->Declination->Reason->find('list'); 
    $contactTypes = $this->Declination->ContactType->find('list'); 
    $this->set(compact('id', 'reasons', 'contactTypes')); 
} 

같이

public $belongsTo = array(
    'Policy' => array(
     'className' => 'Policy', 
     'foreignKey' => 'policy_id' 

내 정책 모델은 내 적위 모델 것은 내 생각이다

 <?php echo $this->UiForm->input("Declination.{$i}.first_name"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.last_name"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.company"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.contact_type_id"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.phone_number"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.reason_id"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.other", array(
      'label' => 'If other, please supply a reason' 
     )); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.dated", array(
      'type' => 'text', 
      'readonly' => 'readonly', 
      'data-datepicker' => '' 
     )); ?> 

모든 입력 사항을 크게 높이세요! 감사!

답변

0

어떻게 든, 당신은 당신이 저장하려는 정책 ID를 알고 있어야합니다 - 그래서 당신은 당신의보기에서 필드로 그를 추가 할 수 있습니다 :

echo $this->UiForm->input("Declination.{$i}.policy_id", array('value'=>$policyId)); 

또는 저장하기 전에 당신은 당신의 컨트롤러에서 설정 할 수 있습니다

$this->request->data['Declination']['policy_id'] = $policyId; 

어느 방법 으로든 사이트를보다 의미있게 사용하십시오.

정책 ID를 얻는 방법과 위치는 귀하에게 달려 있습니다. 컨트롤러에서 find()을 사용하면 set()이므로 뷰에서 액세스 할 수 있습니다. 또는 find()을 사용하여 저장 직전에 검색 할 수 있습니다. 어디서 어떤 데이터를 사용할 수 있는지 알지 못하면 그 이상의 세부 정보를 제공하기가 어렵습니다.

+0

귀하가 동일한 결론에 도달했는지 여부에 관계없이 귀하의 질문에 답변 한 경우이를 확인 표시 (체크 표시)하여 다른 사람들이 이미 해결 된 경우 귀하를 도우려고 시간을 낭비하지 않아도됩니다.) – Dave

+0

네,이 질문을 게시 한 직후에 제 생각에 이것을 추가했습니다 .... UiForm-> input ("Declination. {$ i} .policy_id", array ('type'= > 'hidden', 'value'=> '$ policy_id')); ?> .... 이제해야 할 일은 내 컨트롤러에서 find 메서드를 호출 한 다음 뷰로 보냅니다. 유일한 것은 그것을 실행하는 방법을 너무 확신하지 못합니다. 이제 Declinations 컨트롤러의 Im이 어떻게 부모 모델의 데이터에 액세스합니까? 나는 협회가 한 가지 방법으로 정의되었다는 것을 알고 있습니다. 다른 방향으로 데이터에 어떻게 액세스합니까? $ this-> Declination-> Policy를 시도했지만 작동하지 않습니다. – SkillSet

+0

그것은 stackoverflow 및 Google을 통해 발견되는 매우 일반적인 질문입니다. – Dave

관련 문제