我希望创建和保存关联数据,就像我对belongsTo数据所做的那样 - 关联数据是即时创建的,外部ID也是通过一次调用saveAll或saveAssocated生成并保存的。事务内置。
但对于hasMany关系中的数据似乎并非如此。以用户和评论为例。注释具有user_id作为外键。
似乎我无法通过在用户
上使用单个saveAll($ data)来保存User $数据Array(
'name' => 'Jack',
'email' => 'jack@abc.com',
'Comment' => array(
array(
'title' => 'I like this article.'
)
)
)
我读了一些文档。似乎我需要提到user_id作为正确创建的Comment数据的外键。
如果是这样的话,因为在创建之前我没有用户ID,似乎我需要编码以让SAVE发生两次。
我真的觉得我错过了什么。应该有一种CAKE方式来做到这一点。
答案 0 :(得分:5)
只要您遵循约定并相应地格式化数据,这将由Cake自动完成。对于hasMany
关联,需要在同一级别的字符串键上设置主要模型数据和关联的模型数据,例如
array
(
'User' => array(),
'Comment' => array()
)
另请注意
saveAll函数只是saveMany和。的包装器 saveAssociated方法。它会检查数据并确定什么 它应该执行的保存类型。如果数据以数字格式化 索引数组,saveMany将被调用,否则saveAssociated是 使用
此函数接收与前两个相同的选项,并且是 通常是向后兼容的功能。建议使用 根据具体情况,saveMany或saveAssociated。
所以要么会这样做。
长话短说,模型数据需要通过字符串键分隔和索引,它与find()
调用返回它的格式基本相同。这样,Cake就会知道它需要保存相关数据,并会自动插入Comment
记录的外键。
array
(
'User' => array
(
'name' => 'Jack',
'email' => 'jack@abc.com'
),
'Comment' => array
(
array
(
'title' => 'I like this article.'
)
)
)
另见