Hao*_*Hao 1 cakephp cakephp-2.1
我希望创建并保存相关数据像什么,我有属于关联的数据一样 - 相关数据动态创建,也产生对外ID和一个函数调用来白水或saveAssocated具有交易保存在内置飞在.
但对于hasMany关系中的数据似乎并非如此.以用户和评论为例.注释具有user_id作为外键.
似乎我无法通过在User上使用单个saveAll($ data)来保存User $数据
Array(
'name' => 'Jack',
'email' => 'jack@abc.com',
'Comment' => array(
array(
'title' => 'I like this article.'
)
)
)
Run Code Online (Sandbox Code Playgroud)
我读了一些文档.似乎我需要提到user_id作为正确创建的Comment数据的外键.
如果是这种情况,因为在创建之前我没有用户ID,似乎我需要编码才能让SAVE发生两次.
我真的觉得我错过了什么.这样做应该有一种CAKE方式.
只要您遵循约定并相应地格式化数据,这将由Cake自动完成.对于hasMany关联,主模型数据和关联的模型数据需要在同一级别的字符串键上设置,例如
array
(
'User' => array(),
'Comment' => array()
)
Run Code Online (Sandbox Code Playgroud)
另请注意
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.'
)
)
)
Run Code Online (Sandbox Code Playgroud)
也可以看看
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |