2014-04-23 72 views
0

我创建了一堆代码,它将更新另一个模型的关联模型的字段。将数据更新到CakePHP中另一个模型的关联模型

我有3种型号:

1. Review 
2. Application 
3. Stat 

在我ReviewsController.php

  foreach ($this->request->data['Review']['Mentee'] as $mentee) { 

       $this->loadModel('Application'); 
       $this->Application->id = $mentee; 
       pr($this->Application); 
       $this->Application->Stat->saveField('second_video_observation_completed', $this->request->data['Review']['third_video_setting']); 
      } 

我试图更新second_video_observation_completedStat型号

PR输出$this->Application

http://pastebin.com/jBYL8dzp

和Pr输出$this->Application->Stat

http://pastebin.com/iFD0nyjU

我通过DebugKit检查SQL日志,但它插入新记录,而不会更新Application w/ id 858记录的相关Stat

INSERT INTO `ntc_development`.`stats` (`second_video_observation_completed`, `modified`, `created`) VALUES ('0', '2014-04-23 07:49:58', '2014-04-23 07:49:58') 
+0

你为什么使用'foreach'? CakePHP会自动保存所有关联的数据.... –

+0

我正在更新每个“应用程序”的数据。我编辑了上面的代码。 –

+0

我认为有一个简单的方法...让我看看你的视图文件... –

回答

0

要在Stat模型中使用saveField您需要设置idStat模型不Application模型。

$this->Application->Stat->id = 'YOUR_ID'; 
$this->Application->Stat->saveField('second_video_observation_completed', $this->request->data['Review']['third_video_setting']); 
+0

如果'Stat'与'Application'关联?但是'Stat'与w /'Review'没有关系?有什么办法可以得到吗? –

+0

如果你想使用'saveField',那么没有。这就是他们的方法。你可以用ex前面的'Stat'(使用contains)读取正确的'Application',然后在'Stat'模型中使用'saveField'。 –