我正在使用CakePHP 2.9.1,在HABTM关系中有2个表,我想保存标题记录并一次保存很多关联,但是子记录已经存在,我似乎能够保存使用硬编码列表但不使用变量的数据,我确定它有点傻我正在做,我在插件中运行,我想链接的模型也在主要代码。
不得更改子记录,因为它是由主系统处理的,我只是通过在我们的插件中链接它来扩展它的功能。
// Header Record
class templatedoc extends TemplateModuleAppModel
{
public $useTable = 'templatedocs';
public $hasAndBelongsToMany = [
'Servicetemplate' => [
'className' => 'Servicetemplate',
'joinTable' => 'templatedocs_to_servicetemplates',
'foreignKey' => 'templatedoc_id',
'associationForeignKey' => 'servicetemplate_id',
'unique' => true,
'dependent' => false, // We don't want to delete the Service Template by mistake!
]
];
}
这是我的保存,这有效:
$this->templatedoc->create ();
$data = [
'templatedoc' => [
'warning_adjust' => $prioritywarn,
'summary' => $summary,
],
'Servicetemplate' => [
1,2,3,10 // Dynamic data needed here!
]
];
$result = $this->templatedoc->SaveAll ($data);
但我不能拥有" Servicetemplate"硬编码,我已经尝试在该数组中传递一个数组并删除它,将一个数组插入一个逗号分隔的列表,我最终得到的是标题' templatedoc'记录正在创建但我的链接表中没有任何内容
我能想到的唯一不同之处在于,硬编码列表是int值,数据来自数据库,因此将成为字符串中的int,但我不能看出这是一个问题。< / p>
任何想法我做错了什么?对不起,如果它是完全愚蠢的东西。
答案 0 :(得分:0)
在我的foreach循环中关联时,我最终要做的是存储强制int的项目。
$items[] = (int) $id
然后这工作:
$this->templatedoc->create ();
$data = [
'templatedoc' => [
'warning_adjust' => $prioritywarn,
'summary' => $summary,
],
'Servicetemplate' => [
$items // Dynamic data needed here!
]
];
$result = $this->templatedoc->SaveAll ($data);
看起来非常挑剔,它必须是int类型,在这里添加以防其他人被抓出来,很想知道是否有更好的解决方案。