保存HABTM数据,同时使用CakePHP在相关表中创建新记录

时间:2013-10-01 14:57:32

标签: php cakephp has-and-belongs-to-many

我正在建立一个充当社交网络的网站。

我有个人资料表和个人资料模型。

个人资料 HABTM 兴趣

个人资料 HABTM 爱好 等...

爱好 兴趣 表格中有一些预先定义的记录,用户可以选择在他们的个人资料上显示。但如果他们没有预定义,他们也可以选择增加自己的爱好和兴趣。

当用户选择添加尚不存在的爱好或兴趣时,会出现问题。将预定义记录保存到连接表不是问题。但在同一次保存调用期间,我似乎无法在 兴趣 兴趣爱好 表中创建新条目。

下面是我试图保存的数据数组的片段(我也尝试了其他组合,但这个似乎最符合逻辑):

array(
    'Interests' => array(
        'Interests' => array(
            (int) 0 => '1',
            (int) 1 => '2',
            (int) 2 => '5'
        ),
        'name' => 'Internet' //this is the user-created entry
    ),
    'Hobbies' => array(
        'Hobbies' => array(
            (int) 0 => '1',
            (int) 1 => '2',
            (int) 2 => '5',
            (int) 3 => '7',
            (int) 4 => '8'
        ),
        'name' => 'Reading' //this is also a user-created entry
    )
)

保存功能:$this->Profile->saveAll($this->request->data, array('deep' => true))

问题是在保存期间新条目(在本例中为“Reading”和“Internet”)被忽略。没有错误,其他一切都被保存得很好。

如果我致电$this->Profile->Hobby->saveAll($this->request->data),那么它确实有效,但仅适用于 Hobby 模式。当然,新兴趣会被忽略,因为保存调用不会通过其模型。

数据阵列格式不正确,还是在一次保存调用中无法实现?

1 个答案:

答案 0 :(得分:0)

您可能希望使用Profile调用saveAll,而不是Hobby。

$this->Profile->saveAll($this->request->data)