我很想知道这个问题的答案 - https://stackoverflow.com/questions/24447879/cakephp-habtm-i-want-duplicates-at-save
我在unique = false,saveAll saveAssocaited,数组格式方面尝试了一些不同的东西。没运气。
我的具体示例是传递这个数据数组,我在我的AvailablePackageController中使用saveAll:
'AvailablePackage' => array(
'title' => 'Tester',
'description' => 'Tester description',
'price' => '500.00',
'image' => array(
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => (int) 4,
'size' => (int) 0
)
),
'AvailableLesson' => array(
'AvailableLesson' => array(
(int) 0 => '23',
(int) 1 => '23',
(int) 2 => '23',
(int) 3 => '9',
(int) 4 => '9'
)
)
正如您所看到的,我希望此可用套餐能够获得可用课程' 23'相关3次。在一个包中,您可以将相同的课程重复3次(在这种情况下)。
HABTM设置正确,一切正常。在上面它节省了2行一个23和一个9。所以在配置关系时没有问题。它只是不会保存重复项。
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
默认情况下,保存HasAndBelongsToMany关系时,CakePHP将删除连接表上的所有行,然后再保存新的行。例如,如果您有一个有10个孩子关联的俱乐部。然后,您将与2名儿童一起更新俱乐部。俱乐部只有2个孩子,而不是12个。
habtm关系很简单:
Thing <-has and belongs to many-> OtherThing
如果两个模型之间的链接数量有一定的意义,那几乎可以肯定 不是一个简单的HABTM关系,实际上是其他的东西,例如。
在这种情况下,将连接表作为模型,将其视为hasMany关系,并使用HABTM操作数据的问题蒸发。
在需要和适当的情况下,仍然可以使用HABTM关系。
答案 1 :(得分:0)
将存在一个名为availablelessons_availablepackages的单独表,您需要使用foreignkey和associatedforeignkey为AvailableLesson和AvailablePackage模型定义HABTM,然后您可以保存。所有保存的数据都将在availablelessons_availablepackages表中。