【问题标题】:Updating data to associated model of another model in CakePHP在 CakePHP 中将数据更新到另一个模型的关联模型
【发布时间】:2014-04-23 16:00:38
【问题描述】:

我创建了一堆代码,这些代码将更新另一个模型的关联模型字段。

我有 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']);
            }

我正在尝试更新 Stat 模型中的 second_video_observation_completed 字段

$this->Application 的公关输出

http://pastebin.com/jBYL8dzp

$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')

【问题讨论】:

  • 你为什么使用foreach? Cakephp 会自动保存所有关联的数据....
  • 我正在更新每个 Application 的数据。我编辑了上面的代码。
  • 我认为有一个简单的方法...让我看看你的视图文件...
  • 这是我的视图文件:pastebin.com/434akBC6 和我在评论控制器中的方法pastebin.com/xUCiSkS9
  • 您查看的文件很长,无法查看。我想查看 debug($this->request->data)...

标签: cakephp


【解决方案1】:

要在Stat 模型上使用saveField,您需要为Stat 模型而不是Application 模型设置id

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

【讨论】:

  • 如果StatApplication 相关联怎么办?但是StatReview 没有关系?有什么办法可以得到吗?
  • 如果你想使用saveField,那就不行。他们就是这种方法的工作方式。您可以为前阅读正确的Application 和相关的Stat(使用包含),然后在Stat 模型上使用saveField
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多