2013-10-08 89 views
0

我有評論模型和視頻模型與belongsTo和hasMany關聯連接。我需要在評論控制器(在一個動作中)加載連接的視頻,更改其一個屬性,然後保存評論和視頻。我知道如何更改評論模型,但我無法以任何方式更改視頻模型。CakePhp在其他模型中加載模型並修改其數據

這是我的函數:

$this->Comment->id = $id; 
    if($this->Comment->exists()){ 
     $this->loadModel('Comment'); 
     $this->Comment->set('accepted', 1); 
     if($this->Comment->save()){ 
      $this->Session->setFlash('Comment accepted'); 
      //HOW TO CHANGE ATTR OF VIDEO 
      //in $this->Comment->video_id there is NULL 
     } 
     else 
      $this->Session->setFlash('Can't accept comment'); 

     $this->redirect($this->request->referer()); 
    } 
    else{ 
     throw new NotFoundException(__('Invalid comment')); 
    } 

你能幫助我的傢伙?

回答

2

兩件事情:

首先,你並不需要在所有稱之爲:

$this->loadModel('Comment'); 

剛好高於你叫$this->loadModel('Comment');行了,你已經有了一個行說$this->Comment->id$this->Comment是您的評論模型的一個實例。在Cake中,每個控制器都有一個相應模型的實例,可通過$this->ModelName訪問。

其次,你的評論模型將有一個你的視頻模型的實例。所以,你的視頻模式將已經通過您的意見控制器訪問,在$this->Comment->Video

因此,修改視頻模式,你的拳頭必須得到評論的VIDEO_ID,然後做到這一點:

$this->Comment->Video->id = $videoId; 
$this->Comment->Video->set('accepted', 1); 
$this->Comment->Video->save() 
+0

但是,我怎樣才能從視頻獲取數據。我需要得到現在的價值,modyfi它並保存它。另外當我這樣做:$ this-> Comment-> Video-> id = $ videoId;並且視頻不存在,它會在數據庫中創建(所有attrs爲空) – Chris

+0

您已獲得一個現值,對其進行修改並將其保存爲註釋 - 因此您只需使用完全相同的視頻邏輯,只有通過$ this-> Comment-> Video,而不是$ this-> Comment –

+0

$ this-> Comment-> video_id爲null。 $ this-> Comment-> Video-> rate爲null。我發現解決方案將讀取評論爲數組,獲取video_id,讀取視頻,讀取值並修改它 – Chris