CakePHP如何在不知道一个saveAll中的外键的情况下创建多个数据?

CakePHP如何在不知道一个saveAll中的外键的情况下创建多个数据?,cakephp,cakephp-2.1,Cakephp,Cakephp 2.1,我希望创建和保存关联的数据,就像我对belongsTo data所做的那样——关联的数据是动态创建的,通过调用saveAll或saveAssocated(内置事务),也会动态生成和保存外部ID 但这似乎不是hasMany关系中的数据的情况。以用户和评论为例。注释将用户id作为外键 似乎我无法通过在用户上使用单个saveAll$数据来保存用户$数据 Array( 'name' => 'Jack', 'email' => 'jack@abc.com', 'Comm

我希望创建和保存关联的数据,就像我对belongsTo data所做的那样——关联的数据是动态创建的,通过调用saveAll或saveAssocated(内置事务),也会动态生成和保存外部ID

但这似乎不是hasMany关系中的数据的情况。以用户和评论为例。注释将用户id作为外键

似乎我无法通过在用户上使用单个saveAll$数据来保存用户$数据

Array(
    'name' => 'Jack',
    'email' => 'jack@abc.com',
    'Comment' => array(
         array(
            'title' => 'I like this article.'
         )
    )
)
我读了一些文件。似乎我需要提到user_id作为正确创建注释数据的外键

如果是这样的话,因为在创建用户ID之前我没有用户ID,所以我似乎需要编写代码让保存两次


我真的觉得我错过了什么。应该有一种CAKE方法来实现这一点。

只要您遵循约定并相应地格式化数据,CAKE就会自动完成这一操作。对于许多关联,需要在同一级别的字符串键上设置主模型数据和关联模型数据,如

array
(
    'User' => array(),
    'Comment' => array()
)
还要注意

saveAll函数只是saveMany和saveMany函数的包装器 保存关联的方法。它将检查数据并确定需要什么 它应该执行的保存类型。如果数据以数字格式格式化 索引数组,将调用saveMany,否则将关联saveMany 用过

此函数接收与前两个相同的选项,并且 通常是向后兼容的函数。建议使用 saveMany或saveAssociated取决于具体情况

所以两者都可以

长话短说,模型数据需要通过字符串键进行分隔和索引,其格式与find调用返回的格式基本相同。这样,Cake将知道它需要保存相关数据,并将自动为注释记录插入外键

另见


只要您遵循约定并相应地格式化数据,Cake就会自动完成此操作。对于许多关联,需要在同一级别的字符串键上设置主模型数据和关联模型数据,如

array
(
    'User' => array(),
    'Comment' => array()
)
还要注意

saveAll函数只是saveMany和saveMany函数的包装器 保存关联的方法。它将检查数据并确定需要什么 它应该执行的保存类型。如果数据以数字格式格式化 索引数组,将调用saveMany,否则将关联saveMany 用过

此函数接收与前两个相同的选项,并且 通常是向后兼容的函数。建议使用 saveMany或saveAssociated取决于具体情况

所以两者都可以

长话短说,模型数据需要通过字符串键进行分隔和索引,其格式与find调用返回的格式基本相同。这样,Cake将知道它需要保存相关数据,并将自动为注释记录插入外键

另见


非常感谢。我实际上犯了两个错误。一个是你指出的。另一个是一个OSLocaite模型中的notempty字段规则。我实际上需要这个字段来保存空值。现在它开始工作了。你能用多个用户同时为每个用户提供多条评论吗?是的,你能。只需传递上面显示为数字索引数组的多个集合,并使用saveMany将deep选项设置为true,请参阅@geoidesicThank!我实际上犯了两个错误。一个是你指出的。另一个是一个OSLocaite模型中的notempty字段规则。我实际上需要这个字段来保存空值。现在它开始工作了。你能用多个用户同时为每个用户提供多条评论吗?是的,你能。只需传递上面显示为数字索引数组的多个集合,并使用saveMany将deep选项设置为true,请参见@geoidesic