2013-05-22 75 views
0

我無法理解如何在CakePHP 1.3中保存相關模型數據。我有一個名爲Policy的模型和一個名爲Declinations的模型。政策有許多傾向。拒絕屬於政策。我想要做的就是將策略標識保存在「策略」表中的一個名爲policy_id的字段中。所以問題是我如何從相應的模型中獲取Policy_Id?我是否需要首先在Declination模型或控制器中設置Policy_Id,然後將其傳遞給視圖中的隱藏字段?保存相關模型數據

這裏是我的偏角模型

public $belongsTo = array(
    'Policy' => array(
     'className' => 'Policy', 
     'foreignKey' => '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')); 
} 

這是我的看法

 <?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

是的,在我發佈這個問題後不久,我添加了這個視圖.... <?php echo $ this-> UiForm-> input(「Declination。{$ i} .policy_id」,array('type'= >'hidden','value'=>'$ policy_id')); ?> ....現在我唯一要做的就是在控制器中調用find方法,然後將它發送到視圖。我唯一不知道如何執行它。現在是我在Declinations控制器中的Im如何訪問父模型中的數據?我知道協會是以一種方式定義的。我將如何訪問另一個方向的數據?我試過$ this-> Declination-> Policy,但它不起作用。 – SkillSet

+0

這是一個很常見的問題,通過stackoverflow以及通過谷歌發現。 – Dave