【发布时间】:2015-07-03 11:12:41
【问题描述】:
更新
根据要求,这是我的表单中的$this->request->data,
'office' => 'LON-test33',
'phone' => '456456456',
'address' => [
'addline1' => '1 test0009 st',
'addline2' => 'p09987',
'addline3' => 'test9999',
'postcode' => 'p888',
'country_id' => '226'
],
所以办公室,电话是我办公桌的一部分,地址是整个地址表。
我还做了一个测试,看看它是否在模型中,只是尝试通过提供一个 ID 来更新地址表。哪个有效,所以我认为我的模型很好。所以我想要么与 Office 模型有关,要么我的代码有问题?
谢谢,
所以我使用的是 CakePHP 3.0.something ....
我正在尝试将我的地址更新为办公室表的关联数据。但是,当我更新办公室时,地址会保存为全新的记录?不知道为什么?
这是我目前正在做的事情,
$OfficeTable = TableRegistry::get('Offices');
$CurrentOffice = $OfficeTable->get($OfficeID);
$OfficeTable->patchEntity($CurrentOffice, $this->request->data, ['associated' => ['Addresses']]);
debug( $OfficeTable->save($CurrentOffice) );
在patchEntity中设置Associated好像没什么区别,更新的地址被保存了,但是作为新记录。然后将这个新记录 ID 放入“address_id”字段中的 Office 表中。
但为什么将这个“新/编辑”地址添加为新记录而不更新关联的 id 记录?
现在我一直在阅读文档,形成我所理解的,如果找不到记录,它会创建一个新记录?但是,我已经调试了保存调用,并且在办公室和地址上都有一个“[新]”设置为 false。那么,当它告诉我它不是新地址时,为什么要更新我的办公室但要创建一个新地址呢?
所以要补充一点,在我的调试调用的底部有“[original]”,其中包含应该更新的记录的旧地址 ID。
那我做错了什么?
如果我没有正确解释自己(我有阅读障碍),请告诉我,或者如果缺少任何内容,我可以更新 - 谢谢
【问题讨论】:
-
您正在修补的请求数据是什么样的?
-
@ndm 问题已更新。
-
好的,我已经成功了,但我不确定这是不是最好的方法。但是在我的地址实体中添加 'id' => true 到 'accessible' 似乎可以解决问题。
-
取决于...您似乎使用
Offices belongsTo Addresses关联,对吗?如果是这样,是否还有Addresses hasMany Offices关联?在不使用hasOne关联的情况下,您可以将地址与办公室一起编辑,这似乎有点奇怪。 -
@ndm 是的,我的
codeOfficeTable 属于地址code和我的code地址表有许多办公室code- 我还没有真正玩过CakePHP 烘焙的这些我在建立网站时。我的 SQL 知识有点薄弱,所以你是说我的关系设置错误?
标签: cakephp cakephp-3.0